|
If you can't view the Datasheet, Please click here to try to view without PDF Reader . |
|
Datasheet File OCR Text: |
S/UNI-ATLAS (PM7324) Driver Manual PM7324 S/UNI-ATLAS DRIVER MANUAL DOCUMENT ISSUE 3 ISSUED: JANUARY, 2002 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS (PM7324) Driver Manual ABOUT THIS MANUAL AND S/UNI-ATLAS PM7324 (ATLAS) This manual describes the S/UNI-ATLAS PM7324 (ATLAS) device driver. It describes the driver's functions, data structures, and architecture. This manual focuses on the driver's interfaces to your application, real-time operating system, and to the device. It also describes in general terms how to modify and port the driver to your software and hardware platform. Audience This manual was written for people who need to: * * * Evaluate and test the ATLAS devices Modify and add to the ATLAS driver's functions Port the ATLAS driver to a particular platform. References For more information about the ATLAS driver, see the driver's release Notes. For more information about the ATLAS device, see the documents listed in Table 1 and any related errata documents. Table 1: Related Documents Document Name S/UNI- ATLAS Long Form Data Sheet. S/UNI-ATLAS Long Form Data Sheet Errata. Document Number PMC-1971154 PMC-1981505 Note: Ensure that you use the document that PMC-Sierra issued for your version of the device and driver. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 2 S/UNI-ATLAS (PM7324) Driver Manual Revision History Issue No. Issue 1 Issue 2 Issue Date June 2000 August 2000 Details of Change Document created Valid states in atlasReadReg and atlasWriteReg have been changed from All states to ATLS_PRESENT Added atlasAddEgressDummyConnection API. Issue 3 January 2002 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 3 S/UNI-ATLAS (PM7324) Driver Manual LEGAL INFORMATION Copyright (c) 2002 PMC-Sierra, Inc. The information is proprietary and confidential to PMC-Sierra, Inc., and for its customers' internal use. In any event, you cannot reproduce any part of this document, in any form, without the express written consent of PMC-Sierra, Inc. PMC-2000949 (R3) Disclaimer None of the information contained in this document constitutes an express or implied warranty by PMC-Sierra, Inc. as to the sufficiency, fitness or suitability for a particular purpose of any such information or the fitness, or suitability for a particular purpose, merchantability, performance, compatibility with other parts or systems, of any of the products of PMC-Sierra, Inc., or any portion thereof, referred to in this document. PMC-Sierra, Inc. expressly disclaims all representations and warranties of any kind regarding the contents or use of the information, including, but not limited to, express and implied warranties of accuracy, completeness, merchantability, fitness for a particular use, or non-infringement. In no event will PMC-Sierra, Inc. be liable for any direct, indirect, special, incidental or consequential damages, including, but not limited to, lost profits, lost business or lost data resulting from any use of or reliance upon the information, whether or not PMC-Sierra, Inc. has been advised of the possibility of such damage. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 4 S/UNI-ATLAS (PM7324) Driver Manual Patents The technology discussed is protected by one or more of the following Patents: Canadian Patent No. 2,209,887, Canadian Patent No. 2,164,546, Canadian Patent No. 2,167,757, US Patent No. 5,668,797, US Patent No. 5,815,737, US Patent No. 6,108,303, US Patent No. 6,128,766, UK Patent No. 2,301,913 Relevant patent applications and other patents may also exist. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 5 S/UNI-ATLAS (PM7324) Driver Manual CONTACTING PMC-SIERRA PMC-Sierra 8555 Baxter Place Burnaby, BC Canada V5A 4V7 Tel: (604) 415-6000 Fax: (604) 415-6200 Document Information: document@pmc-sierra.com Corporate Information: info@pmc-sierra.com Technical Support: apps@pmc-sierra.com Web Site: http://www.pmc-sierra.com Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 6 S/UNI-ATLAS (PM7324) Driver Manual TABLE OF CONTENTS Revision History .................................................................................................................. 2 About this Manual and S/UNI-ATLAS PM7324 (ATLAS) .................................................... 2 Legal Information ................................................................................................................ 4 Contacting PMC-Sierra ....................................................................................................... 6 Table of Contents ................................................................................................................ 7 List of Figures.................................................................................................................... 13 List of Tables ..................................................................................................................... 14 1 2 3 Introduction ................................................................................................................. 16 Driver Functions and Features ................................................................................... 17 Software Architecture ................................................................................................. 18 3.1 3.2 3.3 3.4 3.5 Driver Interfaces......................................................................................... 18 Application Programming Interface............................................................ 18 Driver Hardware Interface .......................................................................... 19 RTOS Interface .......................................................................................... 19 Main Components ...................................................................................... 19 Driver Library Module ................................................................................. 20 Global Driver Database and Device Data-Blocks ...................................... 21 Interrupt-Service Routine Module .............................................................. 21 Deferred-Processing Routine Module ........................................................ 21 Software State Description......................................................................... 22 Module States ............................................................................................ 23 Start ............................................................................................................ 23 Ready ......................................................................................................... 23 Device States ............................................................................................. 23 Start ............................................................................................................ 23 Present ....................................................................................................... 23 Active.......................................................................................................... 23 Inactive ....................................................................................................... 23 Processing Flows ....................................................................................... 24 Module Management ................................................................................. 24 Device Initialization, Re-initialization, and Shutdown................................. 24 Cell Extraction ............................................................................................ 25 3.6 3.7 3.8 3.9 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 7 S/UNI-ATLAS (PM7324) Driver Manual 3.10 Interrupt Servicing ...................................................................................... 26 Calling atlasISR.......................................................................................... 27 Calling atlasDPR ........................................................................................ 28 Polling Servicing......................................................................................... 28 4 Data Structures ........................................................................................................... 30 4.1 Global Driver Database.............................................................................. 30 Interrupt Service routine manager.............................................................. 30 Device Data Block ...................................................................................... 30 Initialization Vector ..................................................................................... 33 Interrupt Enable Registers ......................................................................... 33 Ingress Registers ....................................................................................... 34 Egress Registers ........................................................................................ 36 Performance Monitoring Configuration ...................................................... 38 Microprocessor Cell Interface Configuration.............................................. 39 Interrupt Status information ........................................................................ 39 Ingress Record Type .................................................................................. 40 Ingress OAM Defect Record ...................................................................... 43 Ingress Configuration Record .................................................................... 43 Ingress OAM Configuration Record ........................................................... 43 Ingress Policing Record ............................................................................. 44 Ingress Counts Record............................................................................... 44 Ingress PM Record..................................................................................... 45 Ingress Translation Record ........................................................................ 45 Ingress Key Record.................................................................................... 46 Egress Record Type................................................................................... 46 Egress OAM Defect Record....................................................................... 48 Egress Configuration Record ..................................................................... 48 Egress OAM Configuration Record............................................................ 48 Egress Counts Record ............................................................................... 49 Egress PM Record ..................................................................................... 49 Egress Key Record .................................................................................... 49 Performance Monitoring ............................................................................. 50 Microprocessor Cell Interface .................................................................... 52 Per-PHY Policing........................................................................................ 52 Statistics Information .................................................................................. 53 Driver Ingress VC Table Data Structures ................................................... 55 User Context .............................................................................................. 56 5 Application Programming Interface ............................................................................ 57 5.1 5.2 Function Calls ............................................................................................ 57 Driver Initialization and Shutdown.............................................................. 57 Initializing Device Drivers: atlasModuleInit................................................. 57 Shutting Down Drivers: atlasModuleShutdown.......................................... 57 Hardware Access ....................................................................................... 58 Reading Registers: atlasReadReg............................................................. 58 Writing Registers: atlasWriteReg ............................................................... 58 Device addition and deletion...................................................................... 59 Locating Devices and Allocating Memory: atlasAdd .................................. 59 5.3 5.4 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 8 S/UNI-ATLAS (PM7324) Driver Manual Removing Devices: atlasDelete ................................................................. 60 5.5 Device Initialization and Reset................................................................... 60 Initializing Devices Based on Initialization Vectors: atlasInit ...................... 60 Resetting Devices: atlasReset ................................................................... 61 Device Activation and Deactivation............................................................ 61 Activating Devices: atlasActivate ............................................................... 61 De-activating Devices: atlasDeactivate...................................................... 62 Device Diagnostics..................................................................................... 63 Verifying the Access of Microprocessors: atlasTest ................................... 63 Connection Management ........................................................................... 63 Adding Ingress Connections: atlasAddIngressConnection........................ 63 Deleting Ingress Connections: atlasDeleteIngressConnection.................. 64 Adding Egress Connections: atlasAddEgressConnection ......................... 65 Adding Egress Connections: atlasAddEgressDummyConnection............. 66 Deleting Egress Connections: atlasDeleteEgressConnection ................... 66 Getting Ingress VC Status: atlasGetIngressVcStatus ................................ 67 Getting Ingress VC Counters: atlasGetIngressVcCounts .......................... 68 Getting Ingress VC Counters: atlasReadIngressCounts............................ 69 Enabling Ingress VC : atlasEnableIngressVC............................................ 69 Disabling Ingress VC : atlasDisableIngressVC .......................................... 70 Getting Full Ingress VC Records: atlasGetIngressVc ................................ 70 Getting Egress VC Status: atlasGetEgressVcStatus ................................. 71 Getting Ingress VC Counters: atlasGetEgressVcCounts........................... 72 Getting Egress VC Counters: atlasReadEgressCounts............................. 72 Enabling Egress VC : atlasEnableEgressVC............................................. 73 Disabling Egress VC : atlasDisableEgressVC ........................................... 73 Getting Full Egress VC Records: atlasGetEgressVc ................................. 74 Getting Ingress VC Key: atlasReadIngressKey ......................................... 75 Modifying Ingress VC Key: atlasWriteIngressKey...................................... 75 Getting Ingress VC Configuration: atlasReadIngressConfig...................... 76 Modifying Ingress VC configuration: atlasWriteIngressConfig ................... 77 Modifying Connection Configurations: atlasModifyIngressVcConfiguration77 Getting Ingress VC Policing Configuration: atlasReadIngressPolicing...... 78 Modifying Ingress VC Policing Configuration: atlasWriteIngressPolicing .. 79 Modifying Policing Parameters: atlasModifyIngressVcPolicing ................. 79 Getting Ingress VC Translation Configuration: atlasReadIngressTranslation80 Modifying Ingress VC Translation Configuration: atlasWriteIngressTranslation ............................................................... 81 Modifying Translation Parameters: atlasModifyIngressVcTranslation ....... 81 Modifying Configurations, Policings, and Translations: atlasModifyIngressVcConfiguration ..................................................... 82 Getting Ingress VC OAM Configuration: atlasReadIngressOAMConfig .... 83 Modifying Ingress VC OAM Configuration: atlasWriteIngressOAMConfig. 83 Modifying Ingress VC VPC Pointer: atlasWriteIngressVpcPointer ............ 84 Activating/Deactivating Ingress VC CC support: atlasWriteIngressCCActivation ............................................................ 85 Activating/Deactivating Ingress VC AIS support: atlasWriteIngressAISActivation............................................................ 86 Activating/Deactivating Ingress VC RDI support: atlasWriteIngressRDIActivation ........................................................... 87 5.6 5.7 5.8 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 9 S/UNI-ATLAS (PM7324) Driver Manual Modifying Existing Connections: atlasModifyEgressVc ............................. 87 Modifying PHY Id Fields: atlasModifyEgressVcPhyId................................ 88 Modifying VP/VCI Fields: atlasModifyEgressVcVpiVci .............................. 88 Getting Egress VC Configuration: atlasReadEgressConfig....................... 89 Modifying Egress VC Configuration: atlasWriteEgressConfig ................... 90 Getting Egress VC OAM Configuration: atlasReadEgressOAMConfig ..... 90 Modifying Egress VC OAM Configuration: atlasWriteEgressOAMConfig.. 91 Getting Egress VC OAM Defect: atlasReadEgressOAMDefect ................ 92 Modifying Egress VC OAM Defect: atlasWriteEgressOAMDefect ............. 92 Modifying Egress VC VPC Pointer: atlasWriteEgressVpcPointer.............. 93 Activating/Deactivating Egress VC CC support: atlasWriteEgressCCActivation............................................................. 94 Activating/Deactivating Egress VC AIS support: atlasWriteEgressAISActivation ............................................................ 94 Activating/Deactivating Egress VC RDI support: atlasWriteEgressRDIActivation............................................................ 95 5.9 Performance monitoring sessions.............................................................. 96 PM Session Allocation................................................................................ 96 Allocating Free PM Record Ids: atlasGetIngressBank1PMId .................... 96 Allocating Free PM Record Ids: atlasGetIngressBank2PMId .................... 97 Allocating Free PM Record Ids: atlasGetEgressBank1PMId ..................... 97 Allocating Free PM Record Ids: atlasGetEgressBank2PMId ..................... 98 Freeing PM Record Ids: atlasFreeIngressBank1PMId............................... 98 Freeing PM Record Ids: atlasFreeIngressBank2PMId............................... 99 Freeing PM Record Ids: atlasFreeEgressBank1PMId ............................... 99 Freeing PM Record Ids: atlasFreeEgressBank2PMId ............................. 100 Writing PM Records: atlasWriteIngressBank1PMConfig ......................... 100 Writing PM Records: atlasWriteIngressBank2PMConfig ......................... 101 Writing PM Records: atlasWriteEgressBank1PMConfig.......................... 101 Writing PM Records: atlasWriteEgressBank2PMConfig.......................... 102 Reading PM Records: atlasReadIngressBank1PMRecord...................... 102 Reading PM Records: atlasReadIngressBank2PMRecord...................... 103 Reading PM Records: atlasReadEgressBank2PMRecord ...................... 104 Getting Ingress VC PM parameters: atlasReadIngressPM...................... 105 Modifying Ingress VC PM parameters: atlasWriteIngressPM .................. 105 Activating/Deactivating Ingress VC PM sessions: atlasWriteIngressPMActivation .......................................................... 106 Modifiying Ingress PM Parameters: atlasModifyIngressVcPM ................ 107 Modifying Egresss PM Parameters: atlasModifyEgressVcPM ................ 107 Getting Egress VC PM parameters: atlasReadEgressPM....................... 108 Modifying Egress VC PM parameters: atlasWriteEgressPM ................... 109 Activating/Deactivating Egress VC PM sessions: atlasWriteEgressPMActivation........................................................... 109 5.10 Cell Insertion/Extraction ........................................................................... 110 Writing Ingress Cell Buffer Structures: atlasInsertIngressCell ................. 110 Reading Cells From Microprocessor Ingress: atlasExtractIngressCell.....111 Reading Cells From Microprocessor Ingress (OAM cells only): atlasRxCell112 Writing Egress Cell Buffer Structures: atlasInsertEgressCell................... 112 Reading Cells from Microprocessor Egress: atlasExtractEgressCell ...... 113 5.11 Per-PHY Policing ..................................................................................... 113 Writing Internal Per-PHY Policing Contents: atlasWritePerPHYPolicing . 113 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 10 S/UNI-ATLAS (PM7324) Driver Manual Reading Internal Per-PHY Policing Contents: atlasReadPerPHYPolicing114 5.12 Statistics ................................................................................................... 114 Reading Device Wide Counters: atlasGetDeviceCounts ......................... 115 5.13 Interrogation ............................................................................................. 115 Reading Ingress VC Table Changes: atlasGetIngressVCTableCOS ....... 115 Reading Egress VC Table Changes: atlasGetEgressVCTableCOS ........ 116 5.14 Interrupt Servicing .................................................................................... 116 Reading Interrupt Status Registers: atlasISR .......................................... 117 Processing Interrupt Status Information: atlasDPR.................................. 117 6 Hardware Interface ................................................................................................... 119 6.1 Device I/O ................................................................................................ 119 Reading Specific Address Contents: sysAtlasRawRead.......................... 119 Writing Specific Address Contents: sysAtlasRawWrite ............................ 119 Detecting New Devices: sysAtlasDeviceDetect ....................................... 120 Interrupt servicing..................................................................................... 120 Installing Process Vector Tables: sysAtlasIntInstallHandler ..................... 120 Deleting Message Queues: sysAtlasIntRemoveHandler ......................... 121 Enabling Interrupt Processing: sysAtlasIntHandler.................................. 121 Retrieving Interrupt Status Information: sysAtlasDPRtask....................... 122 6.2 7 RTOS interface ......................................................................................................... 123 7.1 Service Calls ............................................................................................ 123 Allocating Bytes: sysAtlasMemAlloc ........................................................ 123 De-Allocating Memory: sysAtlasMemFree............................................... 123 Setting Memory to a specified value: sysAtlasMemSet ........................... 124 Indication Callbacks ................................................................................. 124 Informing the User of OAM Cell Processing: indOAMRx......................... 127 Requesting a Backward Connection Information from the User : indBackEci128 Informing the User of an Occurrence of a System Exception : indException129 Informing the User of an Occurrence of a Normal Interrupt : indIndication129 7.2 8 Porting the Driver...................................................................................................... 131 8.1 8.2 8.3 Driver Source Files................................................................................... 131 Driver Porting Procedures........................................................................ 132 Driver Porting Procedures........................................................................ 132 Procedure 1 : Porting the Driver's RTOS Extensions .............................. 132 To port the driver's RTOS extensions: ..................................................... 132 Procedure 2: Porting the Driver to a Hardware Platform ......................... 133 To port the driver to your hardware platform: ........................................... 133 Procedure 3: Porting the Driver's Application-Specific Elements............. 134 To port the driver's application-specific elements: ................................... 134 Procedure 4: Building the Driver .............................................................. 135 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 11 S/UNI-ATLAS (PM7324) Driver Manual Appendix: Coding Conventions....................................................................................... 136 Macros...................................................................................................... 137 Constants ................................................................................................. 137 Structures ................................................................................................. 137 Functions.................................................................................................. 138 Variables................................................................................................... 138 API Files ................................................................................................... 139 Hardware Dependent Files ...................................................................... 140 RTOS Dependant Files ............................................................................ 140 Other Driver Files ..................................................................................... 140 Acronyms ........................................................................................................................ 141 Index ............................................................................................................................... 142 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 12 S/UNI-ATLAS (PM7324) Driver Manual LIST OF FIGURES Figure 1: Driver Interfaces........................................................................................................................... 18 Figure 2: ATLAS driver architecture ........................................................................................................... 20 Figure 3: Software States ............................................................................................................................ 22 Figure 4: Module Management Flow Diagram............................................................................................ 24 Figure 5: Device Initialization, Re-initialization, and Shutdown .................................................................. 25 Figure 6: Interrupt Service Model................................................................................................................ 27 Figure 7: Polling Service Model .................................................................................................................. 29 Figure 8: Driver Source Files .................................................................................................................... 131 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 13 S/UNI-ATLAS (PM7324) Driver Manual LIST OF TABLES Table 1: Global Driver Database: sATLS_GDD .......................................................................................... 30 Table 2: Interrupt service routine manager: sATLS_ISR_MANAGER ........................................................ 30 Table 3: Device Data Block: sATLS_DDB ................................................................................................... 31 Table 4: ATLAS Initialization Vector: sATLS_INIT_VECTOR ...................................................................... 33 Table 5: Interrupt Enable Registers: sATLS_INT_EN_REGS ..................................................................... 33 Table 6: ATLAS Ingress Register Information: sATLS_INGRESS_REGS .................................................. 34 Table 7: ATLAS Egress Register Information: sATLS_EGRESS_REGS.................................................... 36 Table 8: ATLAS Performance Monitoring Register Information: sATLS_PM_REGS .................................. 38 Table 9: ATLAS Micro Processor Register Information: sATLS_MPCELL_REGS...................................... 39 Table 10: Interrupt Status Registers: sATLS_INT_STATUS........................................................................ 40 Table 11: Ingress Record Type: sATLS_INGRESS_RECORD ................................................................... 40 Table 12: Ingress OAM Defect Record: sATLS_INGRESS_OAMDEFECT................................................ 43 Table 13: Ingress Configuration Record: sATLS_INGRESS_CONFIG...................................................... 43 Table 14: Ingress OAM Configuration Record: sATLS_INGRESS_OAMCONFIG ..................................... 44 Table 15: Ingress Policing Record: sATLS_INGRESS_POLICING ............................................................ 44 Table 16: Ingress Counts Record: sATLS_INGRESS_COUNTS ............................................................... 45 Table 17: Ingress PM Record: sATLS_INGRESS_PM ............................................................................... 45 Table 18 : Ingress Translation Record: sATLS_INGRESS_TRANSLATION .............................................. 45 Table 19: Ingress Key Record: sATLS_INGRESS_KEY............................................................................. 46 Table 20: Egress Record Type: sATLS_EGRESS_RECORD..................................................................... 47 Table 21: Egress OAM Defect Record: sATLS_EGRESS_OAMDEFECT ................................................. 48 Table 22: Egress Configuration Record: sATLS_EGRESS_CONFIG ........................................................ 48 Table 23: Egress OAM Configuration Record: sATLS_EGRESS_OAMCONFIG ....................................... 49 Table 24: Egress Counts Record: sATLS_EGRESS_COUNTS ................................................................. 49 Table 25: Egress PM Record: sATLS_EGRESS_PM ................................................................................. 49 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 14 S/UNI-ATLAS (PM7324) Driver Manual Table 26: Egress Key Record: sATLS_EGRESS_KEY............................................................................... 50 Table 27: Performance Monitoring Record: sATLS_PM_RECORD............................................................ 50 Table 28: Microprocessor Cell Interface Insert Control: sATLS_CELL_INS_CTRL.................................... 52 Table 29: Per-PHY Policing: sATLS_PER_PHY_POLICING ...................................................................... 52 Table 30: Atlas Statistics: sATLS_AGGR_COUNTS ................................................................................... 53 Table 31: Ingress Per-PHY Statistics: sATLS_I_PERPHY_COUNTERS ................................................... 54 Table 32: Egress Per-PHY Statistics: sATLS_E_PERPHY_COUNTERS................................................... 54 Table 33: Ingress Node Type: sATLS_IVC_NODE_TYPE.......................................................................... 55 Table 34: ATLAS Interrupt Reg #1 Categories .......................................................................................... 125 Table 35: ATLAS Interrupt Reg #2 Categories .......................................................................................... 125 Table 36: ATLAS Interrupt Reg #3 Categories .......................................................................................... 126 Table 37: ATLAS Interrupt Reg #4 Categories .......................................................................................... 126 Table 38: ATLAS Interrupt Reg #5 Categories .......................................................................................... 127 Table 39: Variable Type Definitions ........................................................................................................... 136 Table 40: Naming Conventions ................................................................................................................. 136 Table 41: File Naming Conventions .......................................................................................................... 139 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 15 S/UNI-ATLAS(PM7324) Driver Manual Introduction 1 INTRODUCTION The following sections of the ATLAS Driver Manual describe the ATLAS device driver. The code provided throughout this document is written in C language. This has been done to promote greater driver portability to other embedded hardware (Section 6) and Real Time Operating System (Section 7) environments. Section 3 of this document, Software Architecture, defines the software architecture of the ATLAS device driver by including a discussion of the driver's external interfaces and its main components. The Data Structure information in Section 4 describes the elements of the driver that configure or control its behavior. Included here are the constants, variables and structures that the ATLAS device driver uses to store initialization, configuration and statistics information. Section 5 provides a detailed description of each function that is a member of the ATLAS driver Application Programming Interface (API). The section outlines function calls that hide devicespecific details and application callbacks that notify the user of significant device events. For your convenience, Section 8of this manual provides a brief guide for porting the device ATLAS driver to your hardware and RTOS platform. In addition, an extensive Appendix (page 136) and Index (page 142) provides you with useful reference information. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 16 S/UNI-ATLAS(PM7324) Driver Manual Driver Functions and Features 2 DRIVER FUNCTIONS AND FEATURES This section describes the main functions and features supported by the ATLAS driver. Table 2: Driver Functions and Features Function Device Initialization (page 57) Read / Write Device Registers (page 58) Add / Delete Device (page 59) Description The initialization function resets then initializes the device and any associated context information about it. The driver uses this context information to control and monitor the ATLAS device. These functions provide a `raw' interface to the device. Device registers that are both directly and indirectly accessible are available for both inspection and modification via these functions. If applicable, block reads and writes are also available. Adding a device involves verifying that the device exists, associating a device Handle with the device, and then storing context information about it. The driver uses this context information to control and monitor the device. Deleting a device involves shutting down the device and clearing the memory used for storing context information about this device. Activate / De-Activate Device (page 60) Activating a device puts it into its normal mode of operation by enabling interrupts and other global registers. A successful device activation also enables other API invocations. De-activating a device removes it from its operating state; it also disables interrupts and other global registers. Statistics Collection (page 114 ) Interrupt Servicing / Polling (page 116) Functions are provided to retrieve a snapshot of the various counts that are being accumulated by the ATLAS device. These routines should be invoked often enough to avoid letting the counters to rollover. Interrupt Servicing is an optional feature. The user can disable device interrupts and instead poll the device periodically to monitor status and check for alarm/error conditions. Both polling and interrupt driven approaches detect a change in device status and report the status to a Deferred Processing Routine (DPR). The DPR then invokes application callback functions based on the status information retrieved. This allows the driver to report significant events that occur within the device to the application. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 17 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture 3 SOFTWARE ARCHITECTURE This section describes the software architecture of the ATLAS device driver. This includes a discussion of the driver's external interfaces and its main components. 3.1 Driver Interfaces Figure 1 illustrates the external interfaces defined for the ATLAS device driver. Figure 1: Driver Interfaces Application Function Calls Application Callbacks Service Callbacks ATLAS Device Driver RTOS Service Calls Hardware Interrupts Register Accesses ATLAS Device 3.2 Application Programming Interface The driver's API is a collection of high level functions that can be called by application code to configure, control, and monitor the ATLAS device, such as: * Initializing the device 18 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture * * * Validating device configuration Retrieving device status and statistics information Diagnosing the device The driver API functions use the driver library functions as building blocks to provide this system level functionality (see below). 3.3 Driver Hardware Interface The Hardware Interface provides routines to read and write ATLAS registers. The Hardware Interface also provides a template for an Interrupt Service Routine (ISR) that is called when a hardware interrupt is raised. This routine needs to be modified based on the interrupt configuration of the system being used. 3.4 RTOS Interface The RTOS interface module provides functions that enable the driver to use RTOS services. The ATLAS driver requires memory, interrupt, and preemption services from the RTOS. The RTOS interface functions perform the following tasks for the ATLAS device and driver: * * * Allocate and deallocate memory Manage buffers for the DPR and ISR Start and stop task execution The RTOS interface also includes service callbacks. These functions are called by the driver in order to use RTOS service calls, such as install interrupts and start timers. Note: You must modify RTOS interface code to suit your RTOS. 3.5 Main Components Figure 2 illustrates the top level architectural components of the ATLAS device driver. This applies in both polled and interrupt driven operation. Polled operations call ISR periodically. When in interrupt operation mode, the interrupt directly triggers the ISR. The driver includes four main modules: * Driver library module Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 19 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture * * * Device data-block module Interrupt-service routine module Deferred-processing routine module Figure 2: ATLAS driver architecture Application Function Calls Service Callbacks ATLAS DRIVER Register Access ATLAS DEVICE RTOS Interface Service Calls RTOS Indication Callbacks Driver API Deferred Processing Routine GDD Interrupt Context Device Data Blocks Driver Library Functions Interrupt Servicing Routine Hardware Interface Hardware Interrupts Driver Library Module The driver library module is a collection of low-level utility functions that manipulate the device registers and the contents of the driver's Device Data-Block (DDB). The driver library functions serve as building blocks for higher level functions that constitute the driver API module. Application software does not usually call the driver library functions. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 20 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture Global Driver Database and Device Data-Blocks The Global Driver Database (GDD) is the top layer data structure. It is created by the ATLAS device driver to keep track of its initialization and operating parameters, modes, and dynamic data. The Device Data Block is contained in the GDD and is initialized by the device Module for each ATLAS device that is registered. There is one DDB per device and there is a limit on the number of DDBs, and that limit is set by the user when the module is initialized. The DDB is used to store context information about one device, such as : * * * * Device state Control information Initialization parameters Callback function pointers The driver allocates context memory for the DDB when the driver registers a new device. Interrupt-Service Routine Module The ATLAS driver provides an ISR called atlasISR that checks if any valid interrupt conditions are present for the device. This function can be used by a system-specific interrupt-handler function to service interrupts raised by the device. The low-level interrupt-handler function that traps the hardware interrupt and calls atlasISR, is system and RTOS dependent. Therefore, it is outside the scope of the driver. See page 120 for a detailed explanation of the platform specific routines that must be supplied by the user. Deferred-Processing Routine Module The Deferred-Processing Routine Module provided by the ATLAS driver (atlasDPR) clears and processes interrupt conditions for the device. Typically a system specific function, which runs as a separate task within the RTOS, executes the DPR. See page 122 for a detailed explanation of the DPR and interrupt-servicing model. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 21 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture 3.6 Software State Description Figure 3 shows the software state diagrams for the ATLAS module and device(s) as maintained by the driver. Figure 3: Software States Start atlasModuleInit atlasModuleShutdown Ready MODULE STATES Start atlasAdd atlasDelete Present atlasReset atlasInit atlasActivate Inactive atlasDeActivate PER-DEVICE STATES Active atlasReset The diagram shows state transitions made on the successful execution of the corresponding transition routines. State information helps maintain the integrity of the GDD and DDB(s) by controlling the set of operations allowed in each state. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 22 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture 3.7 Module States Start The ATLAS driver Module is not initialized. The only API function accepted in this state is atlasModuleInit. In this state the driver does not hold any RTOS resources (memory, timers, etc), has no running tasks, and performs no actions. Ready The normal operating state for the driver module is "Ready" and can be entered by a call to atlasModuleInit. The Global Driver Database has been allocated and loaded with current data; and the RTOS has responded favorably to all the requests sent to it by the driver. The only API functions accepted in this state is atlasModuleShutdown. The driver Module remains in this state while devices are in operation. Add devices via atlasAdd. 3.8 Device States The following is a description of the ATLAS per-device states. Start The ATLAS device is not initialized. The only API function accepted in this state is atlasAdd. In this state the device is unknown by the driver and performs no actions. Present The ATLAS Device has been successfully added via the API function atlasAdd. A Device Data Block (DDB) is associated to the device and a device handle is provided for the USER. In this state, the device performs no actions. The only API functions accepted in this state are atlasInit and atlasDelete. Active The normal operating state for the device(s) enters by a call to atlasActivate. State changes initiate from the ACTIVE state via atlasDeActivate, atlasReset and atlasDelete. Inactive Enter "Inactive" via the atlasInit or atlasDeActivate function calls. In this state the device remains configured but all data functions de-activate. This includes interrupts and Alarms, Status and Statistics functions. atlasActivate will return the device to the ACTIVE state, while atlasReset or atlasDelete will de-configure the device. Queues are torn down. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 23 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture 3.9 Processing Flows This section describes the main processing flows of the ATLAS driver. The flow diagrams presented here illustrate the sequence of operations that take place for different driver functions. The diagrams also serve as a guide to the application programmer by illustrating the sequence in which the driver API must be invoked. Module Management The following diagram illustrates the typical function call sequences that occur when either initializing or shutting down the ATLAS driver module. Figure 4: Module Management Flow Diagram START atlasModuleInit Performs module level initialization of the driver. Allocates memory for the driver. Perform all device level functions here (add, init, activate, de-activate, reset, delete,...) atlasModuleShutdown Performs Module level shutdown of the driver. This involves deleting all devices currently installed. De-allocates all the driver's memory. END Device Initialization, Re-initialization, and Shutdown The following figure shows the functions and process that the driver uses to initialize, re-initialize, and shutdown the ATLAS device. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 24 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture Figure 5: Device Initialization, Re-initialization, and Shutdown START atlasAdd Detects the device being added in the hardware (using sysAtlasDeviceDetect), allocates memory for storing device context information, and applies a software reset to the device. Initializes the device based on an initialization vector provided by the user. The initialization vector is validated by the user and stored by the driver as part of device context information. The device registers are then configured accordingly. atlasInit atlasActivate Prepares the device for normal operation by enabling interrupts. Enables Ingress and Egress cell-processing. An ISR function is installed using sysAtlasIntInstallHandler. The device is now operational and all other API can be invoked. atlasReset In order to re-initialize the device, resets the device using atlasReset and goes through the initialization sequence again. atlasDeactivate De-activates the device and removes it from normal operation. This involves disabling the device interrupts. It also disables Ingress and Egress cell processing. The ISR routine for this device is removed using sysAtasIntRemoveHandler. Applies a software reset to the device to put it in its default startup state. It also resets the context information for that device. atlasReset atlasDelete Removes the device from the list of devices being controlled by the Atlas driver. This function de-allocates the device context information for the device being deleted. END Cell Extraction The cell extraction is performed in atlasDPR. When a cell is received in the microprocessor cell FIFO, the sysTxMsg task is started and the atlasRxCell API is called. Only the OAM Loopback and Activation/Deactivation cells are processed in atlasRxCell. The user must supply two callback functions: indOamRx and indBackEci. See Section 7.2, Callback Functions, to learn more about these callbacks. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 25 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture 3.10 Interrupt Servicing The interrupt servicing code includes some system specific code (routines prefixed by sys) that is typically implemented by the user for their system as well some generic code (prefixed by ATLAS) provided by the driver that does not change from system to system. user that is installed in the interrupt vector table of the system processor. This routine is invoked when one or more ATLAS devices interrupt the processor. sysAtlasIntHandler then invokes a driver provided routine, atlasISR, for each device in the active state. atlasISR reads the Master Interrupt Status register of the ATLAS and returns with this status information if a valid status bit is set. This status information is then saved by sysAtlasIntHandler. Saving the status information for deferred processing is typically implemented as a message queue. Status information is sent to this queue by the sysAtlasIntHandler. This information is then dequeued for later processing. The sysAtlasDPRtask is a system-specific routine that runs as a separate task within the RTOS. In the message queue implementation model, this task has an associated message queue. The task waits for messages on this message queue. When a message is received, the driversupplied Deferred Processing Routine (atlasDPR) is invoked. The atlasDPR processes the status information and takes appropriate action based on the specific interrupt condition detected. Since the nature of this processing can differ from system to system, the DPR invokes different indication callbacks for different interrupt conditions. These callbacks can then be customized to fit the user's specific requirements. The sysAtlasIntHandler is a system-specific interrupt handler routine implemented by the Note that since the atlasISR and atlasDPR routines themselves do not specify a communication mechanism, the user is given full flexibility in choosing a communication mechanism between the two. A convenient way to implement this communication mechanism is to use a message queue, a service that is provided by most RTOSs. The two system specific routines, sysAtlasIntHandler and sysAtlasDPRtask, are implemented by the user. sysAtlasIntHandler is installed in the interrupt vector table of the processor when the sysAtlasIntInstallHandler is called for the first time. The sysAtlasDPRtask routine is also spawned as a task during this first time invocation of the sysAtlasIntInstallHandler. In addition, sysAtlasIntInstallHandler also creates the communication channel between sysAtlasIntHandler and sysAtlasDPRtask. This communication channel is most commonly a message queue associated with the sysAtlasDPRtask. Similarly, during removal of interrupts, the sysAtlasIntHandler routine is removed from the microprocessor's interrupt vector table and the task associated with the sysAtlasDPRtask is deleted. If interrupts are not available they can be simulated by providing a high priority task that polls the active ATLAS devices periodically. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 26 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture For each active ATLAS device, this high priority task calls the atlasISR. The ISR will then process the state of each device and may, if necessary, pass the device status to the atlasDPR. The altasDPR behaves the same in either model. The high priority polling task should be at a higher priority than the altasDPR; also, it should poll frequently enough to handle device conditions in a timely manner. For the polling model, rather than installing the sysAtlasIntHandler as an interrupt, the high priority polling task should be activated. Similarly, rather than removing the interrupt handler, the polling task should be stopped. The DPR processing should be the same in both cases. Figure 6 illustrates the interrupt service model used in the ATLAS driver design. Figure 6: Interrupt Service Model Interrupt Context Information sysAtlasIntHandler atlasISR sysAtlasDPRTask atlasDPR Indication Callbacks Application Note: Instead of using an interrupt service model, you can use a polling service model in the ATLAS driver to process the device's event-indication registers (see page 28). Calling atlasISR An interrupt handler function, which is system dependent, calls atlasISR. Before this, however, the low-level interrupt-handler function traps the device interrupts. You must implement this function for your system. For your reference, an example implementation of the interrupt handler (sysAtlasIntHandler) appears on page 120. You can customize this example to suit your needs. The interrupt handler (sysAtlasIntHandler) installs in the interrupt vector table of the system processor. It calls when one or more ATLAS devices interrupt the processor. The interrupt handler subsequently calls atlasISR for each device in the active state. atlasISR reads from the ATLAS interrupt-status registers. If there are interrupts outstanding, this is indicated by atlasISR. The sysAtlasIntHandler then sends a message to the DPR task that consists of the device handle of the ATLAS device and the indicated interrupts. The ISR also examines the interrupt itself for exception conditions. If these are present, it will call the system exception callback directly. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 27 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture Note: Normally you should save the status information for deferred processing by implementing a message queue. The interrupt handler uses sysAtlasIntHandler to send the status information to the queue. Calling atlasDPR sysAtlasDPRTask is a system specific function that runs as a separate task within the RTOS. You should set the DPR task's priority higher than that of the application task(s) interacting with the ATLAS driver. In the message-queue implementation model, this task has an associated message queue. The task waits for messages from the ISR on this message queue. When a message arrives, sysAtlasDPRTask calls the DPR (atlasDPR). Then atlasDPR processes the status information to ensure a valid indication is present; after that it makes the callback. Typically, you should implement these callback functions as simple message posting functions that post messages to an application task. However, you can implement the indication callback to perform processing within the DPR task context and return without sending any messages. In this case, ensure that the indication function does not call any API functions that change the driver's state, such as atlasDelete. You can customize this callback to suit your system. See page 60 for a description of the callback function. Note: Since the atlasISR and atlasDPR routines themselves do not specify a communication mechanism, you have full flexibility in choosing a communication mechanism between the two. A convenient way to implement this communication mechanism is to use a message queue, which is a service that most RTOS's provide. You must implement the two system specific routines, sysAtlasIntHandler and sysAtlasDPRTask. When sysAtlasIntInstallHandler is called for the first time, sysAtlasIntHandler is installed in the interrupt vector table of the processor. The sysAtlasDPRTask routine is also spawned as a task during this first time invocation of sysAtlasIntInstallHandler. In addition, sysAtlasIntInstallHandler creates the communication channel between sysAtlasIntHandler and sysAtlasDPRTask. This communication channel is most commonly a message queue associated with sysAtlasDPRTask. Similarly, during the removal of interrupts, the sysAtlasIntHandler function is removed from the microprocessor's interrupt vector table and the task associated with sysAtlasDPRTask is deleted when the last atlas device is removed. As a reference, this manual provides example implementations of the interrupt installation and removal functions. For more information about the interrupt removal function and prototype, see page 121. You can customize these prototypes to suit your specific needs. Polling Servicing Instead of using an interrupt service model, you can use a polling service model in the ATLAS driver to process the device's event-indication registers. Figure 7 illustrates the polling service model used in the ATLAS driver design. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 28 S/UNI-ATLAS(PM7324) Driver Manual Software Architecture Figure 7: Polling Service Model Indication Callbacks atlasISR Interrupt Context Information atlasDPR Application The polling service code includes some system specific code (prefixed by "sysAtlas"), which typically you must implement for your application. The polling service code also includes some system independent code (prefixed by "Atlas") provided by the driver that does not change from system to system. In sysAtlasIntPollTask, the driver-supplied ISR (atlasISR) is periodically called for each device in the active state. The atlasISR reads from the interrupt-status registers of the ATLAS. If some valid status bits are set, it processes the status information and takes appropriate action based on the specific interrupt condition detected. Similarly, during removal of polling service, the task associated with sysAtlasPollTask is deleted when the last ATLAS device is deactivated. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 29 S/UNI-ATLAS(PM7324) Driver Manual Data Structures 4 DATA STRUCTURES The following are the main data structures employed by the ATLAS driver. 4.1 Global Driver Database The Global Driver Database (GDD) stores module level data, such as the number of devices that the driver controls and an array of pointers to the individual Device Data Blocks. The GDD is allocated when the ATLAS module is started Table 1: Global Driver Database: sATLS_GDD Field Name numDevs isrManager pDdb[ATLS_MAX_NUM_DEVS] Field Type UINT1 sATLS_ISR_MANAGER sATLS_DDB Field Description Number of Devices currently managed ISR Manager. Array of pointers to the individual DDBs Interrupt Service routine manager The ISR manager is responsible for installing and uninstalling the ISR into the vector table. Table 2: Interrupt service routine manager: sATLS_ISR_MANAGER Field Name numDevs Field Type UINT1 Field Description Number of Devices currently managed Device Data Block The Device Data Block (DDB) stores control and status information for a single ATLAS device. The DDB is allocated when a new device is added and is de-allocated when an existing device is deleted. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 30 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 3: Device Data Block: sATLS_DDB Field Name EdevState Field Type eATLS_STATE Field Description Device state, which can be one of the following: ATLS_EMPTY ATLS_PRESENT ATLS_INIT ATLS_ACTIVE SinitVector sATLS_INIT_VECTOR Device configuration information passed by the user to the driver. The driver writes to the appropriate ATLAS registers based on the contents of this vector. This variable is used to store the user's context for the device. It is passed as an input parameter when the driver invokes an application callback. System specific information. Address of the ATLAS device in the memory map Maximum number of ingress VCs Maximum number of egress VCs Indicates that the Egress VC has been initialized. Indicates that the Ingress VC has been initialized. This represents the Ingress Primary table for the Device. This represents the Ingress Secondary table for the Device. Ingress Secondary Address List. Indicates whether an Ingress secondary record is free. The Ingress Secondary Address Keys. Indicates whether an Egress record is in use. UsrCtxt ATLS_USR_CTXT PsysInfo deviceAddr ingressMaxVCs egressMaxVCs evcInitialised ivcInitialised ivcPrimaryTable VOID * UINT1 * UINT4 UINT4 UINT1 UINT1 sATLS_IVC_PRIMARY _TABLE ivcSecondaryTable ivcSecondaryAddrList ivcRecordAddrFree ivcSecondaryKeys evcRecordAddrExists sATLS_IVC_SECONDA RY_TABLE sATLS_IVC_SECONDA RY_ADDR_LIST sATLS_IVC_RECORD_ ADDR_FREE sATLS_IVC_SECONDA RY_KEYS sATLS_EVC_RECORD_ ADDR_EXISTS Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 31 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name ingressBank1PMFree ingressBank2PMFree egressBank1PMFree egressBank2PMFree ivcPhyIdMask ivcPhyIdLength ivcMaxPhyIdValue ivcFieldAMask ivcFieldALength ivcMaxFieldAValue ivcFieldBMask ivcFieldBLength ivcMaxFieldBValue evcPhyIdMask evcPhyIdLength evcMaxPhyIdValue evcFieldAMask evcFieldALength evcMaxFieldAValue evcFieldBMask evcFieldBLength evcMaxFieldBValue defaultEvcRam Field Type sATLS_INGRESS_PM_ FREE sATLS_INGRESS_PM_ FREE sATLS_EGRESS_PM_F REE sATLS_EGRESS_PM_F REE UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 sATLS_EVCRAM_TYPE Field Description Indicates whether a PM Record is free in the Ingress Bank 1 list. Indicates whether a PM Record is free in the Ingress Bank 2 list. Indicates whether a PM Record is free in the Egress Bank 2 list. Indicates whether a PM Record is free in the Egress Bank 2 list. Ingress phy Id mask Ingress phy Id length Ingress Max phy Id Ingress Field A Mask Ingress Field A Length Ingress Max Field A Value Ingress Field B Mask Ingress Field B Length Ingress Max Field B Value Egress phy Id mask Egress phy Id length Egress Max phy Id Egress Field A Mask Egress Field A Length Egress Max Field A Value Egress Field B Mask Egress Field B Length Egress Max Field B Value Default EVC Ram contents. This is the device encoded version of the Default EVC record in the Initialization Vector Callback control block. sCb sATLS_CB Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 32 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Initialization Vector The user defines the initialization vector before initializing an ATLAS device. The initialization vector contains various configuration parameters that are used by the driver to program the ATLAS control registers. The initialization vector specifies many configuration parameters. These are broken into functional areas. Table 4: ATLAS Initialization Vector: sATLS_INIT_VECTOR Field Name masterCfg intEnRegs ingressCfg egressCfg mPCellCfg pMCfg defEgRecord indOamRx indException indIndication indBackEci Field Type UINT2 sATLS_INT_EN_REGS sATLS_INGRESS_REGS sATLS_EGRESS_REGS sATLS_MPCELL_REGS sALTS_PM_REGS sATLS_EGRESS_RECORD ATLS_IND_OAM_RX ATLS_IND_SYS_EXCEPT ATLS_IND_INDICATION ATLS_IND_BACKWARD_ECI Field Description Master configuration register Interrupt enables registers Ingress interface configuration Egress interface configuration Microprocessor cell interface registers Performance memory registers Default Egress Record. This is used to populate inactive Egress records. OAM support callback. Exceptions callback General purpose Callback. Backward connection ID request callback. Interrupt Enable Registers The ATLAS Interrupt Enable Register settings are stored in the following structure. Table 5: Interrupt Enable Registers: sATLS_INT_EN_REGS Field Name intEn[0] intEn[1] intEn[2] intEn[3] Field Type UINT2 UINT2 UINT2 UINT2 Field Description Interrupt enable register 1 Interrupt enable register 2 Interrupt enable register 3 Interrupt enable register 4 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 33 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name intEn[4] Field Type UINT2 Field Description Interrupt enable register 5 Ingress Registers The Ingress Register information collects together all the registers used to configure the Ingress portion of the device. This includes the following functional areas: * * * * * Ingress cell interface Global ingress input/output PHY Ingress OAM Ingress PHY/connection policing Ingress VC table configuration Table 6: ATLAS Ingress Register Information: sATLS_INGRESS_REGS Field Name ingInCellCfg1 ingInCellCfg2 ingOutCellCfg1 ingOutCellCfg2 ingRDIBackOAMcfg ingBackRptCfg ingSearchCfg ingFieldACfg ingFieldBCfg ingCellProcCfg1 ingPHYPolice1 ingPHYPolice2 ingPHYPolCfg1_2 ingPHYPolCfg3_4 ingConPolCfg1 Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Ingress Input Cell Interface Configuration 1 Ingress Input Cell Interface Configuration 2 Ingess Output Cell Interface Configuration 1 Ingess Output Cell Interface Configuration 2 Ingress RDI Backward OAM Cell Interface Configuration Ingress Backward Reporting OAM Cell Interface Configuration Ingress Search Engine Configuration FieldA Location and Length Field B Location and Length Ingress Cell Processor Configuration 1 Ingress PHY Policing 1 Ingress PHY Policing 2 Ingress PHY Policing Configuration 1&2 Ingress PHY Policing Configuration 3&4 Ingress Connection Policing Configuration 1 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 34 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name ingConPolCfg2 ingConPolCfg3 ingConPolCfg4 ingConPolCfg5 ingConPolCfg6 ingConPolCfg7 ingConPolCfg8 ingPolCfgNonCompCnt ingCellRtgCfg ingOAMCellGenCfg ingPerPHYAISCfg1 ingPerPHYAISCfg2 ingPerPHYRDICfg1 ingPerPHYRDICfg2 ingOAMDefType0_1 ingOAMDefType2_3 ingOAMDefType4_5 ingOAMDefType6_7 ingOAMDefType8_9 ingOAMDefType10_11 ingOAMDefType12_13 ingOAMDefType14_15 ingDefLoc0_1 ingDefLoc2_3 ingDefLoc4_5 ingDefLoc6_7 ingDefLoc8_9 ingDefLoc10_11 ingDefLoc12_13 ingDefLoc14_15 Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Ingress Connection Policing Configuration 2 Ingress Connection Policing Configuration 3 Ingress Connection Policing Configuration 4 Ingress Connection Policing Configuration 5 Ingress Connection Policing Configuration 6 Ingress Connection Policing Configuration 7 Ingress Connection Policing Configuration 8 Ingress Policing Configuration and Non-Compliant Cell Counting Ingress Cell Routing Configuration Ingress OAM Cell Generation Configuration Ingress Per-PHY AIS Cell Generation Control 1 Ingress Per-PHY AIS Cell Generation Control 2 Ingress Per-PHY RDI Cell Generation Control 1 Ingress Per-PHY RDI Cell Generation Control 2 Ingress OAM Defect Type 0&1 Ingress OAM Defect Type 2&3 Ingress OAM Defect Type 4&5 Ingress OAM Defect Type 6&7 Ingress OAM Defect Type 8&9 Ingress OAM Defect Type 10&11 Ingress OAM Defect Type 12&13 Ingress OAM Defect Type 14&15 Ingress Defect Location Octets 0&1 Ingress Defect Location Octets 2&3 Ingress Defect Location Octets 4&5 Ingress Defect Location Octets 6&7 Ingress Defect Location Octets 8&9 Ingress Defect Location Octets 10&11 Ingress Defect Location Octets 12&13 Ingress Defect Location Octets 14&15 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 35 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name ingCellCntCfg1 ingCellCntCfg2 ingCellProcCfg2 ingMaxFrame ingVCTableMax ingPerPHYAPSIndCfg1 ingPerPHYAPSIndCfg2 ingPerPHYCountCfg Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Ingress Cell Counting Configuration 1 Ingress Cell Counting Configuration 2 Ingress Cell Processor Configuration 2 Ingress Maximum Frame Length Count Ingress VC Table Maximum Index Ingress Per-PHY APS Indication Configuration 1 Ingress Per-PHY APS Indication Configuration 2 Ingress Per-PHY Counter Configuration Egress Registers The Egress Register information collects together all the registers used to configure the Egress portion of the device. This includes the following functional areas: * * * * * Egress cell interface Global egress input/output PHY Egress OAM Egress Per-PHY counter configuration Egress VC table configuration Table 7: ATLAS Egress Register Information: sATLS_EGRESS_REGS Field Name egInCellCfg1 egInCellCfg2 egOutCellCfg1 egOutCellCfg2 egRDIBackOAMCfg egBackRptCfg egCellProcCfg egCellRtgCfg Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Egress Input Cell Interface Configuration 1 Egress Input Cell Interface Configuration 2 Egress Output Cell Interface Configuration 1 Egress Output Cell Interface Configuration 2 Egress RDI Backward OAM Cell Interface Configuration Egress Backward Reporting OAM Cell Interface Configuration Egress Cell Processor Configuration Egress Cell Routing Configuration Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 36 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name egCellDirCfg1 egCellDirCfg2 egBackOAMHOLCfg egPacedAISCCCfg egPacedFwdPMCfg egPerPHYAISCfg1 egPerPHYAISCfg2 egPerPHYRDICfg1 egPerPHYRDICfg2 egPerPHYAPSInd1 egPerPHYAPSInd2 egVCCountingCfg1 egVCCountingCfg2 egOAMDefType0_1 egOAMDefType2_3 egOAMDefType4_5 egOAMDefType6_7 egOAMDefType8_9 egOAMDefType10_11 egOAMDefType12_13 egOAMDefType14_15 egDefLoc0_1 egDefLoc2_3 egDefLoc4_5 egDefLoc6_7 egDefLoc8_9 egDefLoc10_11 Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Egress Cell Processor Direct Lookup Index Configuration 1 Egress Cell Processor Direct Lookup Index Configuration 2 Egress Backward OAM Cell Interface Head Of Line Time Out Configuration Egress Paced AIS/CC Cell Generation Configuration Egress Paced Fwd PM Cell Generation Configuration Egress Per-PHY AIS Cell Generation Control 1 Egress Per-PHY AIS Cell Generation Control 2 Egress Per-PHY RDI Cell Generation Control 1 Egress Per-PHY RDI Cell Generation Control 2 Egress PerPHY APS Indication Configuration 1 Egress PerPHY APS Indication Configuration 2 Egress VC Table Counting Configuration 1 Egress VC Table Counting Configuration 2 Egress OAM Defect Type 0&1 Egress OAM Defect Type 2&3 Egress OAM Defect Type 4&5 Egress OAM Defect Type 6&7 Egress OAM Defect Type 8&9 Egress OAM Defect Type 10&11 Egress OAM Defect Type 12&13 Egress OAM Defect Type 14&15 Egress Defect Location Octets 0&1 Egress Defect Location Octets 2&3 Egress Defect Location Octets 4&5 Egress Defect Location Octets 6&7 Egress Defect Location Octets 8&9 Egress Defect Location Octets 10&11 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 37 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name egDefLoc12_13 egDefLoc14_15 egVCTableMax egPerPHYCountCfg Field Type UINT2 UINT2 UINT2 UINT2 Field Description Egress Defect Location Octets 12&13 Egress Defect Location Octets 14&15 Egress VC Table Maximum Index Egress Per-PHY Counter Configuration Performance Monitoring Configuration The performance Monitoring Configuration information collects together all the registers used to configure the Global control of the Performance Monitoring Memory. This includes the following functional areas: * * Ingress Monitoring Thresholds Egress Monitoring Thresholds Table 8: ATLAS Performance Monitoring Register Information: sATLS_PM_REGS Field Name ingBackOAMPacingCfg ingCellProcF4PMMap ingCellProcF5PMMap ingPacedFwdPMCell ingPMThreshA1 ingPMThreshA2 ingPMThreshB1 ingPMThreshB2 ingPMThreshC1 ingPMThreshC2 ingPMThreshD1 ingPMThreshD2 egBackOAMPacingCfg egCellProcF4PMMap egCellProcF5PMMap Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Ingress Backward OAM Cell Pacing Configuration Ingess Cell Processor F4-PM Flow VCI Map Ingress Cell Processor f5-PM Flow PTI Map Ingress Paced Fwd PM Cell Generation Ingress Performance Monitoring Threshold A1 Ingress Performance Monitoring Threshold A2 Ingress Performance Monitoring Threshold B1 Ingress Performance Monitoring Threshold B2 Ingress Performance Monitoring Threshold C1 Ingress Performance Monitoring Threshold C2 Ingress Performance Monitoring Threshold D1 Ingress Performance Monitoring Threshold D2 Egress Backward OAM Cell Pacing Configuration Egess Cell Processor F4-PM Flow VCI Map Egress Cell Processor f5-PM Flow PTI Map Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 38 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name egPMThreshA1 egPMThreshA2 egPMThreshB1 egPMThreshB2 egPMThreshC1 egPMThreshC2 egPMThreshD1 egPMThreshD2 Field Type UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Egress Performance Monitoring Threshold A1 Egress Performance Monitoring Threshold A2 Egress Performance Monitoring Threshold B1 Egress Performance Monitoring Threshold B2 Egress Performance Monitoring Threshold C1 Egress Performance Monitoring Threshold C2 Egress Performance Monitoring Threshold D1 Egress Performance Monitoring Threshold D2 Microprocessor Cell Interface Configuration Microprocessor Cell Interface information collects together all the registers used to configure the Microprocessor Ingress/Egress Cell interfaces. This includes the following functional areas: * * Ingress Microprocessor cell interface Egress Microprocessor cell interface Table 9: ATLAS Micro Processor Register Information: sATLS_MPCELL_REGS Field Name ingMPCExtCfg ingMPCInsCfg egMPCExtCfg egMPCInsCfg Field Type UINT2 UINT2 UINT2 UINT2 Field Description Ingress Microprocessor Extract Cell Configuration Ingress Microprocessor Insert Cell Configuration Egress Microprocessor Extract Cell Configuration Egress Microprocessor Insert Cell Configuration Interrupt Status information The ATLAS Interrupt Status register information is returned to the application in the following structure. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 39 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 10: Interrupt Status Registers: sATLS_INT_STATUS Field Name intSt[0] intSt[1] intSt[2] intSt[3] intSt[4] Field Type UINT2 UINT2 UINT2 UINT2 UINT2 Field Description Interrupt status register 1 Interrupt status register 2 Interrupt status register 3 Interrupt status register 4 Interrupt status register 5 Ingress Record Type This record mirrors the Ingress VC record documented in the ATLAS Hardware Specification, with some addressing information prepended. Table 11: Ingress Record Type: sATLS_INGRESS_RECORD Field Name fieldA cLPccEn f4ToF5Ais phyId row1Unused0 pmActive2 pmAddr2 pmActive1 pmAddr1 nni fieldB vpi vci status configuration internalStatus Field Type UINT2 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT2 UINT2 UINT2 UINT1 UINT2 UINT4 Field Description Field a, used as search key only, not part of the device record. CLP Conformance Check Enable F4 to F5 AIS Generation Control PHY ID Unused PM2 on/off flag PM2 Session Address PM1 on/off flag PM1 Session Address Network-Network Interface flag Field B Virtual Path Identifier Virtual Connection Identifier Ingress internal Status indicator Ingress VC Table configuration field Ingress internal status field Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 40 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name oamConfiguration vpcPointer cocup row3Reserved tat2 tat1 gfr policeConfiguration action2 action1 i2 l2 i1 l1 phyPolice remainingFrameCount violate gfrState nonCompliant3 nonCompliant2 nonCompliant1 ingressCellCount2 ingressCellCount1 header[ATLS_IVC_HEADER_SIZE] udf prePo1 prePo2 prePo3 prePo4 prePo5 Field Type UINT2 UINT2 UINT1 UINT1 UINT4 UINT4 UINT1 UINT1 UINT1 UINT1 UINT2 UINT2 UINT2 UINT2 UINT1 UINT2 UINT1 UINT1 UINT2 UINT2 UINT2 UINT4 UINT4 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 Field Description Ingress VC table OAM configuration field VPC pointer Conditional Conformance update Unused Theoretical Arrival Time 2 Theoretical Arrival Time 1 Guaranteed Frame Rate Policing Configuration Action on Non-conforming GCRA2 Action on Non-conforming GCRA1 Increment 2 Limit 2 Increment 1 Limit 1 PHY Policing on/off Remaining Frame Count Tag all cells as Violating Internal GFR State Non-compliant Cell count 1 Non-compliant Cell count 2 Non-compliant Cell count 3 Ingress Cell Count 2 Ingress Cell Count 1 New cell Header for translation User Defined Field PrePend/PostPend 1 PrePend/PostPend 2 PrePend/PostPend 3 PrePend/PostPend 4 PrePend/PostPend 5 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 41 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name prePo6 prePo7 prePo8 prePo9 prePo10 alternateIngressCellCount2 alternateIngressCellCount1 row10Unused1 row10Unused0 maximumFrameLength rxSegmentDefectType rxEndToEndDefectType rxEndToEndAisDefectLoc[ATLS_IVC_AI S_DEFECT_LOCATION_SIZE] rxSegmentAisDefectLoc[ATLS_IVC_AIS _DEFECT_LOCATION_SIZE] Field Type UINT1 UINT1 UINT1 UINT1 UINT1 UINT4 UINT4 UINT4 UINT1 UINT2 UINT1 UINT1 UINT1 UINT1 Field Description PrePend/PostPend 6 PrePend/PostPend 7 PrePend/PostPend 8 PrePend/PostPend 9 PrePend/PostPend 10 Alternate Ingress Cell Counter 2 Alternate Ingress Cell Counter 1 Unused Unused Maximum Frame Length Segment AIS Type End to End AIS Type End to End AIS Location Segment AIS Location Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 42 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Ingress OAM Defect Record This record collects together all the fields used to configure the OAM defect support in the Ingress VC table documented in the ATLAS Hardware Specification. Table 12: Ingress OAM Defect Record: sATLS_INGRESS_OAMDEFECT Field Name rxSegmentDefectType rxEndToEndDefectType rxEndToEndDefectLoc[ATLS_IVC_AIS_DEFECT_LOCA TION_SIZE] rxSegmentAisDefectLoc[ATLS_IVC_AIS_DEFECT_LO CATION_SIZE] Field Type UINT1 UINT1 UINT1 UINT1 Field Description Segment AIS type. End-to-end AIS type. End-to-End AIS Location. Segment AIS Location Ingress Configuration Record This record collects together all the fields used to configure the VC connection in the Ingress VC table documented in the ATLAS Hardware Specification. Table 13: Ingress Configuration Record: sATLS_INGRESS_CONFIG Field Name nni status configuration internalStatus gfr gfrState maximumFrameLength Field Type UINT1 UINT1 UINT2 UINT4 UINT1 UINT1 UINT2 Field Description Network-network Interface flag Ingress VC table status field Ingress VC table configuration field Ingress internal status field Guaranteed frame rate Internal gfr state Maximum Frame length Ingress OAM Configuration Record This record collects together all the fields used to configure the OAM support in the Ingress VC table documented in the ATLAS Hardware Specification. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 43 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 14: Ingress OAM Configuration Record: sATLS_INGRESS_OAMCONFIG Field Name oamConfiguration vpcPointer f4ToF5AIS Field Type UINT2 UINT2 UINT1 Field Description Ingress VC table OAM configuration field VPC pointer F4 to F5 AIS generation control Ingress Policing Record This record collects together all the fields used to configure the Policing parameters in the Ingress VC table documented in the ATLAS Hardware Specification. Table 15: Ingress Policing Record: sATLS_INGRESS_POLICING Field Name policeConfiguration phyPolice cLPccEn cocup tat2 tat1 action2 action1 i2 l2 i1 l1 violate Field Type UINT2 UINT1 UINT1 UINT1 UINT4 UINT4 UINT1 UINT1 UINT2 UINT2 UINT2 UINT2 UINT1 Field Description Policing Configuration PHY Policing ON/OFF CLP Conformance Check enable Conditional Conformance update Theoretical Arrival Time 2 Theoretical Arrival Time 1 Action of non-conforming GCRA2 Action of non-conforming GCRA1 Increment 2 Limit 2 Increment 1 Limit 1 Tag all cells as violating Ingress Counts Record This record collects together all the fields used to read the Counts parameters in the Ingress VC table documented in the ATLAS Hardware Specification. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 44 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 16: Ingress Counts Record: sATLS_INGRESS_COUNTS Field Name nonCompliant3 nonCompliant2 nonCompliant1 ingressCellCount2 ingressCellCount1 alternateIngressCellCount2 alternateIngressCellCount1 remainingFrameCount Field Type UINT2 UINT2 UINT2 UINT4 UINT4 UINT4 UINT4 UINT2 Field Description Non-Compliant cell count 3 Non-Compliant cell count 2 Non-Compliant cell count 1 Ingress Cell Count 2 Ingress Cell Count 1 Alternate Ingress Cell Counter 2 Alternate Ingress Cell Counter 1 Remaining Frame count Ingress PM Record This record collects together all the fields used to configure the PM support in the Ingress VC table documented in the ATLAS Hardware Specification. Table 17: Ingress PM Record: sATLS_INGRESS_PM Field Name pmActive2 pmAddr2 pmActive1 pmAddr1 Field Type UINT1 UINT1 UINT1 UINT1 Field Description PM2 on/off flag PM2 Session Address PM1 on/off flag PM1 Session Address Ingress Translation Record This record collects together all the fields used to configure the Translation parameters in the Ingress VC table documented in the ATLAS Hardware Specification. Table 18 : Ingress Translation Record: sATLS_INGRESS_TRANSLATION Field Name header[ATLS_IVC_HEADER_SIZE] udf Field Type UINT1 UINT1 Field Description New cell header for Translation User defined field Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 45 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name prePo1 prePo2 prePo3 prePo4 prePo5 prePo6 prePo7 prePo8 prePo9 prePo10 Field Type UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 Field Description Prepend/PostPend 1 Prepend/PostPend 2 Prepend/PostPend 3 Prepend/PostPend 4 Prepend/PostPend 5 Prepend/PostPend 6 Prepend/PostPend 7 Prepend/PostPend 8 Prepend/PostPend 9 Prepend/PostPend 10 Ingress Key Record This record collects together all the fields used to configure the search Key parameters in the Ingress VC table documented in the ATLAS Hardware Specification. Table 19: Ingress Key Record: sATLS_INGRESS_KEY Field Name fieldA phyId fieldB vpi vci Field Type UINT2 UINT1 UINT2 UINT2 UINT2 Field Description Field A PHY ID Field B Virtual Path Identifier Virtual Connection Identifier Egress Record Type This record is as documented in the ATLAS hardware specification. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 46 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 20: Egress Record Type: sATLS_EGRESS_RECORD Field Name fieldA fieldB active pmActive2 pmActive1 nni vpi vci reserved cosEnable vpcPointer pmAddr2 pmAddr1 status internalStatus oamConfiguration rxEndToEndAisDefectType rxSegmentAisDefectType configuration phyId egressCellCount1 egressCellCount2 alternateEgressCellCount1 alternateEgressCellCount2 rxEndToEndAisDefectLoc [AIS_DEFECT_LOCATION_SIZE] rxSegmentToEndAisDefectLoc [AIS_DEFECT_LOCATION_SIZE] Field Type UINT2 UINT2 UINT1 UINT1 UINT1 UINT1 UINT2 UINT2 UINT1 UINT1 UINT2 UINT1 UINT1 UINT1 UINT2 UINT2 UINT1 UINT1 UINT2 UINT1 UINT4 UINT4 UINT4 UINT4 UINT1 UINT1 Field Description Field A, used as Search Key only, not part of the VCRecord. Field B, used as Search Key only, not part of the VCRecord. Active Record PM session 1 PM session 2 network identifier virtual path identifier virtual channel identifier Unused Enable Change of State indications channel pointer PM session address PM session address Egress VC Status field Egress Internal Status field OAM Configuration Field End to End AIS defect type Segment AIS defect type Egress Configuration Field PHY ID number egress cell count egress cell count egress cell alternate count egress cell alternate count End to End AIS location Segment AIS location Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 47 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Egress OAM Defect Record This record collects together all the fields used to configure the OAM defect support in the Egress VC table documented in the ATLAS Hardware Specification. Table 21: Egress OAM Defect Record: sATLS_EGRESS_OAMDEFECT Field Name rxSegmentDefectType rxEndToEndDefectType rxEndToEndDefectLoc[ATLS_IVC_AIS_DEF ECT_LOCATION_SIZE] rxSegmentAisDefectLoc[ATLS_IVC_AIS_D EFECT_LOCATION_SIZE] Field Type UINT1 UINT1 UINT1 UINT1 Field Description Segment AIS Defect type End-to-end AIS Defect type End-to-End AIS Location Segment AIS Location Egress Configuration Record This record collects together all the fields used to configure the VC connection in the Egress VC table documented in the ATLAS Hardware Specification. Table 22: Egress Configuration Record: sATLS_EGRESS_CONFIG Field Name active nni status configuration internalStatus cosEnable Field Type UINT1 UINT1 UINT1 UINT2 UINT2 UINT1 Field Description Connection activation on/off Network-network Identifier Egress VC table status field Egress VC table configuration field Egress internal status field Change of state on/off Egress OAM Configuration Record This record collects together all the fields used to configure the OAM support in the Egress VC table documented in the ATLAS Hardware Specification. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 48 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 23: Egress OAM Configuration Record: sATLS_EGRESS_OAMCONFIG Field Name oamConfiguration Field Type UINT2 Field Description Egress VC table OAM configuration field Egress Counts Record This record collects together all the fields used to read the Counts parameters in the Egress VC table documented in the ATLAS Hardware Specification. Table 24: Egress Counts Record: sATLS_EGRESS_COUNTS Field Name egressCellCount1 egressCellCount2 alternateEgressCellCount1 alternateEgressCellCount2 Field Type UINT4 UINT4 UINT4 UINT4 Field Description Egress Cell Count 1 Egress Cell Count 2 Alternate Egress Cell Count 1 Alternate Egress Cell Count 2 Egress PM Record This record collects together all the fields used to configure the PM support in the Egress VC table documented in the ATLAS Hardware Specification. Table 25: Egress PM Record: sATLS_EGRESS_PM Field Name pmActive2 pmAddr2 pmActive1 pmAddr1 Field Type UINT1 UINT1 UINT1 UINT1 Field Description PM2 on/off flag PM2 Session Address PM1 on/off flag PM1 Session Address Egress Key Record This record collects together all the fields used to configure the Key parameters in the Egress VC table documented in the ATLAS Hardware Specification. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 49 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Table 26: Egress Key Record: sATLS_EGRESS_KEY Field Name fieldA phyId fieldB vpi vci Field Type UINT2 UINT1 UINT2 UINT2 UINT2 Field Description Field A PHY ID Field B Virtual Path Identifier Virtual Connection Identifier Performance Monitoring This structure contains the configuration and statistical information for a Performance Monitoring session. Table 27: Performance Monitoring Record: sATLS_PM_RECORD Field Name configStatus bip16 currCellCountCLP0 currCellCountCLP0_1 blerStored fwdBMCSN fwdTRCC0 fwdTRCC0_1 fwdTUC0 fwdTUC0_1 fwdFMCSN unused1 bwdTRCC0 bwdTRCC0_1 Field Type UINT2 UINT2 UINT2 UINT2 UINT1 UINT1 UINT2 UINT2 UINT2 UINT2 UINT1 UINT1 UINT2 UINT2 Field Description Configuration and status bits for this PM record. Bit interleaved parity 16 Current count of CLP0 cells Current count of CLP0+1 cells Stored Block Error Result Forward BR Monitoring Cell Sequence Number Forward Total Received CLP0 Cell Count Forward Total Received CLP0+1 Cell Count Forward Total CLP0 User Cell Count Forward Total CLP0+1 User Cell Count Forward FM Cell Sequence Number Unused Backward Total Received CLP0 Cell Count Backward Total Received CLP0+1 Cell Count Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 50 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name bwdTUC0 bwdTUC0_1 bwdFMCSN bwdBMCSN fwdErrors fwdImpaired fwdLostOrImpaired fwdSECBErrored fwdSECBLost fwdSECBMisins fwdSECBC fwdLostFMCells fwdTaggedCLP0 fwdMisinserted fwdLostCLP0 fwdLostCLP0_1 fwdTotalLostCLP0 fwdTotalLostCLP0_1 bwdErrors bwdImpaired bwdLostOrImpaired bwdSECBErrored bwdSECBLost bwdSECBMisins bwdSECBC bwdSECBCAccum bwdTaggedCLP0 bwdMisinserted bwdLostCLP0 Field Type UINT2 UINT2 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT1 UINT2 UINT2 UINT2 Field Description Backward Total CLP0 User Cell Count Backward Total CLP0+1 User Cell Count Backward FM Cell Sequence Number Backward BR Monitoring Cell Sequence Number Forward Error Cell Count Forward Impaired Block Count Forward Lost or Impaired Block Count Forward SECB Errored count Forward SECB Lost count Forward SECB misinserted count Forward SECB Combined count Forward Lost FM Cell count Forward Tagged CLP0 count Forward Misinserted cell count Forward Lost CLP0 cell count Forward Lost CLP0+1 cell count Total Forward Lost CLP0 cells for this PM session Total Forward Lost CLP0+1 cells for this PM session Backward Error Cell Count Backward Impaired Block Count Backward Lost or Impaired Block Count Backward SECB Errored count Backward SECB Lost count Backward SECB misinserted count Backward SECB Combined count Backward Accumulating SECBC count Backward Tagged CLP0 count Backward Misinserted cell count Backward Lost CLP0 cell count 51 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name bwdLostCLP0_1 bwdTotalLostCLP0 bwdTotalLostCLP0_1 txedCLP0Count txedCLP0_1Count bwdLostBRCells bwdLostFMCells Field Type UINT2 UINT2 UINT2 UINT4 UINT4 UINT1 UINT1 Field Description Backward Lost CLP0+1 cell count Total Backward Lost CLP0 cells for this PM session Total Backward Lost CLP0+1 cells for this PM session Transmitted CLP0 user cell count Transmitted CLP0+1 user cell count Backward Lost BR cells Backward Lost FM cells Microprocessor Cell Interface This structure contains the parameters needed to control cell insertion at the microprocessor interface. Table 28: Microprocessor Cell Interface Insert Control: sATLS_CELL_INS_CTRL Field Name length crc Field Type UINT1 UINT1 Field Description Only hexadecimal value between 0x02 and 0x07 are valid and represent cell lengths of 27-32 words respectively. Non-zero: forces generation of CRC10 in the last word of the payload. Zero: last word of the payload is not overwritten. Non-zero - header translation is enabled. Zero - header translation is disabled. Identifies the output PHY device uphdrx phyId UINT1 UINT1 Per-PHY Policing This structure contains the configuration and status information for per-PHY policing. Table 29: Per-PHY Policing: sATLS_PER_PHY_POLICING Field Name FieldType Field Description Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 52 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name phyTAT phyI phyL phyNonCompliant2 phyNonCompliant1 phyVCCount FieldType UINT4 UINT2 UINT2 UINT2 UINT2 UINT1 Field Description Theoretical Arrival Time for the PHY interface PHY Increment field PHY Limit field PHY Non-compliant count 2 PHY Non-compliant count 1 Determines (non-zero value) whether cells which are non-compliant with the per-VC policer are counted in the per-PHY non-compliant cell counts and vice versa Selects one of four possible police configurations Selects one of four possible police actions for non-conforming cells PHY Non-compliant count 3 phyPoliceConfig phyAction phyNonCompliant3 UINT1 UINT1 UINT2 Statistics Information The ATLAS device maintains the following sets of device statistics. These statistics can only be referenced as the full set. The following VC and PM Statistics are covered in Section 4. * * * * * * Aggregate Cells Ingress Interface Physical Cells Ingress Interface input/output Cells Egress Interface input/output Cells Ingress Per-PHY Counts [32] Egress Per-PHY Counts [32] Device Statistics information is returned to the application in the following structures. Table 30: Atlas Statistics: sATLS_AGGR_COUNTS Field Name ingPhysCellCount ingInCellCount Field Type UINT1 UINT4 Field Description Physical Layer Cells erroneously arriving at the ATLAS Ingress Input Cells 53 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Data Structures ingOutCellCount egInCellCount egOutCellCount ingPerPhyCounters[32] egPerPhyCounters[32] UINT4 UINT4 UINT4 Ingress Output Cells Egress Input Cells Egress Output Cells sATLS_I_PERPHY_COUNTERS 32 Per-Phy Ingress Counter sets sATLS_E_PERPHY_COUNTERS 32 Per-Phy Egress Counter sets The following structure describes a single set of Ingress Per-PHY statistics. There will be 32 versions of these. Table 31: Ingress Per-PHY Statistics: sATLS_I_PERPHY_COUNTERS Field Name ingPhyCLP0Count ingPhyCLP1Count ingPhyOAMCount ingPhyRMCount ingPhyOAMRMErrorCount ingPhyInvVpiVciPtiCount ingPhyNonZeroGFCCount ingPhyLastUnknownVpi ingPhyLastUnknownVci Field Type UINT4 UINT4 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 UINT2 Field Description CLP0 Cell Count CLP1 Cell Count Valid OAM Cell Count Valid RM Cell Count Errored OAM/RM Cell Count Invalid VPI/VCI/PTI Cell count Non-Zero GFC Cell Count Last Unknown VPI on this PHY Last Unknown VCI on this PHY The following structure describes a single set of Egress Per-PHY statistics. There will be 32 versions of these. Table 32: Egress Per-PHY Statistics: sATLS_E_PERPHY_COUNTERS Field Name egPhyCLP0Count egPhyCLP1Count egPhyOAMCount egPhyRMCount egPhyOAMRMErrorCount Field Type UINT4 UINT4 UINT2 UINT2 UINT2 Field Description CLP0 Cell Count CLP1 Cell Count Valid OAM Cell Count Valid RM Cell Count Errored OAM/RM Cell Count Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 54 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name egPhyInvVciPtiCount Field Type UINT2 Field Description Invalid VCI/PTI Cell count Driver Ingress VC Table Data Structures The driver maintains its own copy of the information that allows it to perform all access operations on the Ingress VC Table without excessive reads of the Atlas registers. It keeps a mirror copy of: * * * * * The primary table The secondary table A list of unused secondary table records A list of free record addresses A list of all the secondary keys Each of the above items in the list are kept on a per device basis. They are located in the Device Data Block. These constitute a mirror copy of the Ingress VC Tree structures and the Egress Vector. The contents of each VC record are not maintained. Ingress VC Primary Table (ivcPrimaryTable) The ivcPrimaryTable is an array of secondary root node addresses. The ivcPrimaryTable is a mirror copy of the VC Primary Table in the Ingress SRAM. The driver allocates this array when atlasAdd is called; it contains ingressMaxVCs elements. The root node addresses are 16 bits wide to cater for up to 65536 root nodes. The root node is the top node of a binary tree of secondary keys. Ingress VC Secondary Table (ivcSecondaryTable) The ivcSecondaryTable is an array of sATLS_NODE_TYPEs. The ivcSecondaryTable is a mirror copy of the secondary table elements of the Ingress VC Table Row0 (ISA[19:16]=0000). The driver allocates this array when atlasAdd is called; it contains ingressMaxVCs elements. There can be up to 65536 secondary branches. The sATLS_IVC_NODE_TYPE is defined below. Table 33: Ingress Node Type: sATLS_IVC_NODE_TYPE Field Name Selector Field Type UINT1 Field Description Selector used to decide direction while traversing the binary tree. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 55 S/UNI-ATLAS(PM7324) Driver Manual Data Structures Field Name LeftLeaf LeftBranch RightLeaf RightBranch Field Type UINT1 UINT2 UINT1 UINT2 Field Description 0: indicates leftBranch identifies a branch 1: indicates leftBranch identifies a leaf Identifies either a vcRecord or another branch. 0: indicates rightBranch identifies a branch 1: indicates rightBranch identifies a leaf Identifies either a vcRecord or another branch. Ingress VC Secondary Address List (ivcSecondaryAddrList) The SRAM addresses for the Secondary Search Table entries can be assigned arbitrarily. The driver implements a stack of available Secondary Search Table entries (ivcSecondaryAddrList) and uses a stack pointer (ivcSecondaryAddrIndex) to point to the next available Secondary Search Table entry. The ivcSecondaryAddrList array contains up to 65, 536 elements. Each element is a 16-bit number that indexes into the ivcSecondaryTable array. Ingress VC Record Address Free (ivcRecordAddrFree) The SRAM addresses for the VC Table Records can be assigned arbitrarily. The driver implements an array of Boolean values which identify whether or not a VC Record is in use. The address of the VC Record is used to index into the array. The ivcRecordAddrFree array contains up to 65536 elements. Ingress VC Secondary Keys (ivcSecondaryKeys) A search on a secondary search table always yields a leaf. The only exception to this is when the tree is empty. Even though a leaf is found, it may not be the actual leaf being searched for. To verify that the leaf found matches the one sought, the secondary keys of the leaf that was found and the one sought must be compared. The driver maintains a mirror copy of the SRAM secondary keys. The address of the secondary key (which comes from the ivcSecondaryAddrList) is used to index into the array. The ivcSecondaryKeys array contains up to 65536 secondary keys. Each secondary key is a 5-byte array (enough to store the 39-bit secondary key). User Context The user context ATLS_USR_CTXT is defined as a void* data type. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 56 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface 5 5.1 APPLICATION PROGRAMMING INTERFACE Function Calls This section provides a detailed description of each function that is a member of the ATLAS driver Application Programming Interface. 5.2 Driver Initialization and Shutdown Initializing Device Drivers: atlasModuleInit This function performs module level initialization of the device driver. This involves allocating the GDB and initializing the data-structure. Prototype Inputs Outputs Returns INT4 atlasModuleInit(void) None None ATLS_SUCCESS ATLS_ERR_MEM_ALLOC ATLS_ERR_MODULE_ALREADY_INIT Shutting Down Drivers: atlasModuleShutdown This function performs module level shutdown of the driver. This involves deleting all devices controlled by the driver and deallocating the GDD. Prototype Inputs Outputs Returns void atlasModuleShutdown(void) None None None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 57 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface 5.3 Hardware Access Reading Registers: atlasReadReg This function can be used to read a register of a specific ATLAS device by providing the register identifier. This function derives the actual address location based on the device handle and register identifier inputs. It then reads the contents of this address location using the system specific function, sysAtlasRawRead. Prototype Valid States Inputs INT4 atlasReadReg(ATLAS atlas, UINT2 regId, UINT2 *pVal) ATLS_PRESENT atlas regId : device handle (from atlasAdd) : register identifier : register value Outputs Returns pVal ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_REG_ID Writing Registers: atlasWriteReg This function can be used to write to a register of a specific ATLAS device by providing the register identifier. This function derives the actual address location based on the device handle and register identifier inputs. It then writes the contents of this address location using the system specific function, sysAtlasRawWrite. Prototype Valid Sates Inputs INT4 atlasWriteReg(ATLAS atlas, UINT2 regId, UNIT2 pu2Val) ATLS_PRESENT atlas regId pval : device handle (from atlasAdd) : register identifier : value to be written Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 58 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_REG_ID 5.4 Device addition and deletion Locating Devices and Allocating Memory: atlasAdd This function calls sysAtlasDetectDevice to locate the device, allocates memory for the device data block (DDB), stores the user's context for the device, and outputs the pointer to the DDB as a handle back to the user. The device handle should be used to identify the device on which the operation is to be performed. Prototype INT4 atlasAdd( ATLS_USR_CTXT usrCtxt, UINT4 maxIngressVCs, UINT4 maxEgressVCs, sATLS_DDB **patlasHandle) ATLS_EMPTY Valid States Inputs usrCtxt maxIngressVCs maxEgressVCs patlasHandle : user context information : the maximum Number of Ingress VCs : the maximum Number of Egress VCs : device handle (to be used as an argument to most of the ATLAS APIs). Outputs Returns ATLS_SUCCESS, ATLS_ERR_MOD_NOT_INIT ATLS_ERR_EXCEED_MAX_DEVS ATLS_ERR_INVALID_MAX_VCS ATLS_ERR_DEV_NOT_DETECTED ATLS_ERR_DEV_ALREADY_ADDED ATLS_ERR_MEM_ALLOC Side Effects Device is put in the ATLS_PRESENT state. A software reset is applied to the device. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 59 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Removing Devices: atlasDelete This function is used to remove the specified device from the list of devices being controlled by the ATLAS driver. Deleting a device involves de-allocating the DDB for that device. It does not deallocate the user's context pointer. The user is responsible for deallocating the user's context. Once deleted, the device handle associated with this device is invalid and cannot be reused. Prototype Valid States Inputs Outputs Returns INT4 atlasDelete(ATLAS atlas) ATLS_PRESENT atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE Side Effects The DDB is deallocated and the device is no longer `known' to the driver. 5.5 Device Initialization and Reset Initializing Devices Based on Initialization Vectors: atlasInit This function initializes the device based on an initialization vector passed by the user. This initialization vector is stored by the driver in the device's DDB. The device registers are then configured accordingly. Prototype Valid States Inputs INT4 atlasInit(ATLAS atlas, sATLS_INIT_VECT *psInitVector) ATLS_PRESENT atlas psInitVector : device handle (from atlasAdd) : pointer to initialization vector that is used by the driver to program the device registers Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 60 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE Side Effects The device is put in ATLS_INIT state. Resetting Devices: atlasReset This function applies a software reset to the ATLAS device; it also reinitializes all of the DDB's contents (except for the initialization vector, which is left unmodified). This function is typically called before initializing the device with a new initialization vector. Prototype Valid States INT4 atlasReset(ATLAS atlas) ATLS_PRESENT ATLS_INIT ATLS_ACTIVE Inputs Outputs Returns atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE Side Effects The device is put in the ATLS_PRESENT state. So the device has to be initialized after a reset. 5.6 Device Activation and Deactivation Activating Devices: atlasActivate This function activates the ATLAS device by preparing it for normal operation. This involves enabling device interrupts and enabling the Ingress and Egress Cell processing. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 61 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototypes Valid States Inputs Outputs Returns INT4 atlasActivate(ATLAS atlas) ATLS_INIT atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE Side Effects Puts the device in ATLS_ACTIVE state. De-activating Devices: atlasDeactivate This function de-activates the ATLAS device and removes it from normal operation. This involves disabling device interrupts and disabling the Ingress and Egress Cell processing. Prototype Valid States Inputs Outputs Returns INT4 atlasDeactivate(ATLAS atlas) ATLS_INIT, ATLS_ACTIVE atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE Side Effects Puts the device in ATLS_INIT state. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 62 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface 5.7 Device Diagnostics Verifying the Access of Microprocessors: atlasTest This function verifies the correctness of the microprocessor's access to the device registers by writing to and reading back values; it also verifies access to VC Table SRAM, PM Internal Ram, and Per-PHY Policing RAM. Prototype Valid States Inputs Outputs Returns INT4 atlasTest(ATLAS atlas) ATLS_PRESENT atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_SRAM_DIAG ATLS_ERR_IPMRAM_DIAG ATLS_ERR_EPMRAM_DIAG ATLS_ERR_PER_PHY_POLICE_RAM_DIAG Side Effects Puts the device in the ATLS_PRESENT state after the test. So the device should be re-initialized after calling this function. 5.8 Connection Management This section defines the functions available for creating and managing connections through the ATLAS device. These functions access the Ingress/Egress VC Table registers to perform their tasks. The driver will maintain a shadow copy of the Ingress and Egress VC Table structures. Adding Ingress Connections: atlasAddIngressConnection This function adds an ingress connection. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 63 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasAddIngressConnection(ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord, UINT2*pvcId,UINT1 forceAddr) ATLS_ACTIVE Valid Sates Inputs atlas patlasIngressVCRecord pvcId forceAddr : device handle (from atlasAdd) : connection information structure : pointer to VC Id to use, if forceAddr is non-zero : if zero, the Driver allocates an unused VCid. If non-zero, allocate the VC Id as specified by pvcId. when forceAddr is non-zero, the user must specify the address at which the new VC should appear. When forceAddr is zero, this field acts as an output parameter and contains the address of the new VC allocated by the driver. Outputs pvcId: Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_IVC_ADD_VC_EXISTS ATLS_ERR_IVC_VC_ADDR_RANGE ATLS_ERR_IVC_VC_ADDR_NONE_FREE ATLS_ERR_IVC_VC_ADDR_NOT_FREE ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE Deleting Ingress Connections: atlasDeleteIngressConnection This function deletes an ingress connection. Prototype INT4 atlasDeleteIngressConnection(ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 64 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Valid Sates Inputs ATLS_ACTIVE atlas patlasIngressVCRecord : device handle (from atlasAdd) : only the fieldA, fieldB, inPhyId are used from this structure during the deletion. The structure is passed for consistency of interface. Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE Adding Egress Connections: atlasAddEgressConnection This function adds an egress connection. Prototype INT4 atlasAddEgressConnection(ATLAS atlas, sATLS_EGRESS_RECORD*patlasEgressVCRecord, UINT2*pvcId) ATLS_ACTIVE Valid Sates Inputs atlas patlasEgressVCRecord pvcId : device handle (from atlasAdd) : connection information structure : pointer to VC Id to use, if forceAddr is non-zero : when forceAddr is non-zero the user must specify the address at which the new VC should appear. When forceAddr is zero this field acts as an output parameter and contains the address of the new VC allocated by the driver. Outputs pvcId Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 65 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_ADD_RECORD_EXISTS Adding Egress Connections: atlasAddEgressDummyConnection Add the Egress dummy connections required for the cell insertion software workaround. For the software workaround to function correctly, there must be one dummy connection per PHY (the number of PHYs is specified by the Egress Cell Processor Direct Lookup Index Configuration #1). Prototype INT4 atlasAddEgressDummyConnection(ATLAS atlas, sATLS_EGRESS_RECORD*patlasEgressVCRecord, UINT2*pvcId) ATLS_ACTIVE Valid Sates Inputs atlas patlasEgressVCRecord pvcId : device handle (from atlasAdd) : connection information structure : pointer to VC Id to use, if forceAddr is non-zero : contains the address of the new VC allocated by the driver. Outputs Returns pvcId ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_ADD_RECORD_EXISTS Deleting Egress Connections: atlasDeleteEgressConnection This function deletes an egress connection. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 66 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasDeleteEgressConnection(ATLAS atlas, sATLS_EGRESS_RECORD *patlasEgressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasEgressVCRecord : device handle (from atlasAdd) : only the fieldA, fieldB, inPhyId, are used from this structure during the deletion. The structure is passed for consistency of interface. Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_ADD_RECORD_NOT_EXIST Getting Ingress VC Status: atlasGetIngressVcStatus This function gets ingress VC status. This function returns the full contents of the following rows of the ingress VC -1,2,3,4,7,8,10,11,12,13, and 14. All other fields are undefined Prototype INT4 atlasGetIngressVcStatus (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs Outputs atlas : device handle (from atlasAdd) : the user must set the fieldA, fieldB, phyId, VPI, and VCI before calling this function. The driver finds the VC and fills in the other fields for the user. patlasIngressVCRecord Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 67 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Getting Ingress VC Counters: atlasGetIngressVcCounts This function gets ingress VC. This function returns the full contents of the following rows of the ingress VC-5, 6 and 9. All other fields are undefined Prototype INT4 atlasGetIngressVcCounts (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs Outputs atlas : device handle (from atlasAdd) : the user must set the fieldA, fieldB, phyId, VPI, and VCI before calling this function.The driver finds the VC and fills in the other fields for the user. patlasIngressVCRecord Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 68 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Getting Ingress VC Counters: atlasReadIngressCounts This function gets ingress VC counters only. This function returns the full contents of the following rows of the ingress VC-5, 6 and 9. All other fields are undefined. Prototype INT4 atlasReadIngressCounts ( ATLAS atlas,UINT2 u2VcId,UINT1 clearOnRead,sATLS_INGRESS_COUNTS *pCounts) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId clearOnRead : device handle (from atlasAdd) : index to the VC table record : reset the counts if clearOnRead = 1, otherwise don't clear it. : connection information structure Outputs Returns pcounts ATLS_SUCCESS ATLS_ERR_MOD_NOT_INIT ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT Enabling Ingress VC : atlasEnableIngressVC This function enables an existing ingress VC connection. It modifies the Active bit in the configuration field of row 2 in the VC table. Prototype Valid States Inputs INT4 atlasEnableIngressVC(ATLAS atlas, UINT2 u2VcId) ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. Outputs None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 69 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT Disabling Ingress VC : atlasDisableIngressVC This function disables an existing ingress VC connection. It modifies the Active bit in the configuration field of row 2 in the VC table. Prototype Valid States Inputs INT4 atlasEnableIngressVC(ATLAS atlas, UINT2 u2VcId) ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT Getting Full Ingress VC Records: atlasGetIngressVc This function gets the full ingress VC record. This is the equivalent of getting both the Status and Counts. Prototype INT4 atlasGetIngressVc (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas : device handle (from atlasAdd) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 70 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Outputs patlasIngressVCRecord : the user must set the fieldA, fieldB, phyId, VPI, and VCI before calling this function.The driver finds the VC and fills in the other fields for the user. Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Getting Egress VC Status: atlasGetEgressVcStatus This function gets Egress VC status; it returns the full contents of the following rows of the Egress VC-0, 1, 2,3,8,9,10,11,12,13,14 and 15. All other fields are undefined. Prototype INT4 atlasGetEgressVcStatus (ATLAS atlas,sATLS_EGRESS_RECORD *patlasEgressVCRecord) ATLS_ACTIVE Valid States Inputs Outputs atlas : device handle (from atlasAdd) : the user must set the fieldA, fieldB, and phyId before calling this function. The driver finds the VC and fills in the other fields for the user. patlasEgressVCRecord Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 71 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Getting Ingress VC Counters: atlasGetEgressVcCounts This function gets Egress VC Counters. This function returns the full contents of the following rows of the Egress VC-4,5,6, and 7. All other fields are undefined. Prototype INT4 atlasGetEgressVcStatus (ATLAS atlas, sATLS_EGRESS_RECORD *patlasEgressVCRecord) ATLS_ACTIVE Valid States Inputs Outputs atlas : device handle (from atlasAdd) : the user must set the fieldA, fieldB, and phyId before calling this function. The driver finds the VC and fills in the other fields for the user. patlasEgressVCRecord Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Getting Egress VC Counters: atlasReadEgressCounts This function gets Egress VC Counters. This function returns the full contents of the following rows of the Egress VC-4,5,6, and 7. All other fields are undefined Prototype INT4 atlasReadEgressVC(ATLAS atlas, UINT2 u2VcId, UINT1 clearOnRead, sATLS_EGRESS_COUNTS *pCounts) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 72 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas u2VcId clearOnRead : device handle (from atlasAdd) : index to the VC table record. : Reset the counts if clearOnRead = 1, otherwise don't clear it. : connection information structure. Outputs Returns pCounts ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Enabling Egress VC : atlasEnableEgressVC This function enables an existing Egress VC connection. It modifies the Active bit of row 2 in the Egress VC table. Prototype Valid States Inputs INT4 atlasEnableEgressVC(ATLAS atlas, UINT2 u2VcId) ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT Disabling Egress VC : atlasDisableEgressVC This function disables an existing egress VC connection. It modifies the Active bit of row 2 in the Egress VC table. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 73 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype Valid States Inputs INT4 atlasEnableEgressVC(ATLAS atlas, UINT2 u2VcId) ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT Getting Full Egress VC Records: atlasGetEgressVc This function gets the full Egress VC record. This is the equivalent of getting both the Status and Counts. Prototype INT4 atlasGetEgressVcStatus (ATLAS atlas, sATLS_EGRESS_RECORD *patlasEgressVCRecord) ATLS_INIT, ATLS_ACTIVE Valid States Inputs Outputs atlas : device handle (from atlasAdd) : the user must set the fieldA, fieldB, and phyId before calling this function. The driver finds the VC and fills in the other fields for the user. patlasEgressVCRecord Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 74 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Getting Ingress VC Key: atlasReadIngressKey This function gets the Ingress VC Key parameters; it returns the following VC ingress table fields: Row 1 : fieldA, fieldB, phyId, vci, vpi. Prototype INT4 atlasReadIngressKey(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_KEY *pKey) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : translation information structure. Outputs Returns pKey ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC Key: atlasWriteIngressKey This function modifies the Ingress VC Key parameters; the following VC ingress table fields are updated: Row 1 : fieldB, phyId, vci, vpi. Prototype INT4 atlasWriteIngressKey(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_KEY *pKey) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 75 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Valid States Inputs ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : translation information structure. Outputs Returns pKey ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Getting Ingress VC Configuration: atlasReadIngressConfig This function gets Ingress VC Configuration. This function returns the following VC ingress table fields : Row 1 : NNI Row 2 : status, internal Status, configuration Row 4 : gfr Row 5 : gfr state Row 10 : maximum Frame Length Prototype INT4 atlasReadIngressConfig(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_CONFIG *pConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : configuration information structure. Outputs Returns pConfig ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 76 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Modifying Ingress VC configuration: atlasWriteIngressConfig This function modifies the Ingress VC Configuration of an existing connection; the following VC ingress table fields are updated : Row 1 : NNI Row 2 : status, internal Status, configuration Row 4 : gfr Row 5 : gfr state Row 10 : maximum Frame Length. Prototype INT4 atlasWriteIngressConfig(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_CONFIG *pConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pConfig : device handle (from atlasAdd) : index to the VC table record. : configuration information structure. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Connection Configurations: atlasModifyIngressVcConfiguration This function modifies the configuration of an existing connection. Only configuration information is updated. All other fields are ignored. Confguration information is contained in: Row 1: F4toF5AIS, PMActive2, Pmaddr2, PNActive1, Pmaddr1, NNI Row 2: Configuration, OAM Configuration, and VPC Pointer Row 10: MaximumFramelength Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 77 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasModifyIngressVcConfiguration (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasIngressVCRecord None : device handle (from atlasAdd) : connection information structure Outputs Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Getting Ingress VC Policing Configuration: atlasReadIngressPolicing This function gets Ingress VC Policing configuration. This function returns the following VC ingress table fields : Row 1 : CLP CC enable Row 3 : Cocup, tat2, tat1 Row 4 : action2, action1, i2, l2, i1, l1 Row 5 : phy Police, violate. Prototype INT4 atlasReadIngressPolicing(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_POLICING *pPolicing) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : policing information structure. Outputs pPolicing Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 78 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC Policing Configuration: atlasWriteIngressPolicing This function modifies Ingress VC Policing configuration; the following VC ingress table fields are updated : Row 1 : CLP CC enable Row 3 : Cocup, tat2, tat1 Row 4 : action2, action1, i2, l2, i1, l1 Row 5 : phy Police, violate. Prototype INT4 atlasWriteIngressPolicing(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_POLICING *pPolicing) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : policing information structure. pPolicing Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Policing Parameters: atlasModifyIngressVcPolicing This function modifies the policing parameters of an existing connection. Only policing parameters are updated. All other fields are ignored. Policing information is contained in: Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 79 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Row 1: cLPccEn Row 3: Cocup Row 4: PoliceConfiguration, Actio2, Action1 Row 5: PhyPolice, violate Prototype INT4 atlasModifyIngressVcPolicing (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs Returns atlas patlasIngressVCRecord : device handle (from atlasAdd) : connection information structure ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Getting Ingress VC Translation Configuration: atlasReadIngressTranslation This function gets the Ingress VC translation configuration. This function returns the following VC ingress table fields : Row 7 : Header, UDF, prepo1, prepo2 Row 8 : prepo3 to prepo10. Prototype INT4 atlasReadIngressTranslation(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_TRANSLATION *pTranslation) ATLS_INIT,ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : translation information structure. Outputs pTranslation Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 80 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC Translation Configuration: atlasWriteIngressTranslation This function modifies the Ingress VC translation configuration; the following VC ingress table fields are updated : Row 7 : Header, UDF, prepo1, prepo2 Row 8 : prepo3 to prepo10. Prototype INT4 atlasWriteIngressTranslation(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_TRANSLATION *pTranslation) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pTranslation : device handle (from atlasAdd) : index to the VC table record. : translation information structure. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Translation Parameters: atlasModifyIngressVcTranslation This function modifies the Translation parameters of an existing connection. Only translation parameters are updated. All other fields are ignored. Row 7: Header, udf, PrePo1, prePo2 Row 8: PrePo3, prePo4, PrePo5, prePo6, PrePo7, prePo8, PrePo9, prePo10 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 81 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasModifyIngressVcTranslation (ATLAS atlas,sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasIngressVCRecord : device handle (from atlasAdd) : connection information structure Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST Modifying Configurations, Policings, and Translations: atlasModifyIngressVcConfiguration This is equivalent to issuing a Modify Configuration, Policing, and Translation. All fields that would be updated by those functions will be updated by this function. Prototype INT4 atlasModifyIngressVcConfiguration (ATLAS atlas,sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasIngressVCRecord : device handle (from atlasAdd) : connection information structure Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST 82 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Getting Ingress VC OAM Configuration: atlasReadIngressOAMConfig This function gets the Ingress VC OAM configuration. This function returns the following VC ingress table fields : Row 1 : f4ToF5Ais. Row 2 : OAM configuration, vpcPointer Prototype INT4 atlasReadIngressOAMConfig(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_OAMCONFIG *pOamConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : OAM config information structure. Outputs Returns pOamConfig ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC OAM Configuration: atlasWriteIngressOAMConfig This function modifies the Ingress VC OAM configuration; the following VC ingress table fields are updated: Row 1 : f4ToF5Ais Row 2 : OAM configuration, vpcPointer Prototype INT4 atlasWriteIngressOAMConfig(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_OAMCONFIG *pOamConfig) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 83 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas u2VcId pOamConfig : device handle (from atlasAdd) : index to the VC table record. : OAM config information structure. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC VPC Pointer: atlasWriteIngressVpcPointer This function modifies the Ingress VC VPC pointer field in row 2. Prototype INT4 atlasWriteIngressVpcPointer(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_OAMCONFIG *pOamConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pOamConfig : device handle (from atlasAdd) : index to the VC table record. : OAM config information structure. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 84 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Getting Ingress VC OAM Defect: atlasReadIngressOAMDefect This function gets the Ingress VC OAM Defect configuration; it returns the contents of row 11 to row 14. Prototype INT4 atlasReadIngressOAMDefect(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_OAMDEFECT *pOamDefect) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : OAM defect config information structure Outputs pOamDefect Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Ingress VC CC support: atlasWriteIngressCCActivation This function modifies the Ingress VC CC OAM support configuration. The contents of OAM configuration field in row 2 is updated. Prototype INT4 atlasWriteIngressCCActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 85 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas u2VcId segment : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). endToEnd Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Ingress VC AIS support: atlasWriteIngressAISActivation This function modifies the Ingress VC AIS OAM support configuration. The contents of OAM configuration feld in row 2 is updated. Prototype INT4 atlasWriteIngressAISActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId segment endToEnd : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT 86 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Activating/Deactivating Ingress VC RDI support: atlasWriteIngressRDIActivation This function modifies the Ingress VC RDI OAM support configuration. The contents of OAM configuration field in row 2 is updated. Prototype INT4 atlasWriteIngressRDIActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId segment endToEnd : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Existing Connections: atlasModifyEgressVc This function modifies an existing connection. Only configuration information is updated. All other fields are ignored. Row 0: Active, pmActive2, pmactive, nni Row 1: CosEnable, vpcPointer, pmAddr2, pmAddr1 Row 2: OamConfiguration Row 3: Configuration Prototype INT4 atlasModifyEgressVcConfiguration (ATLAS atlas, sATLS_EGRESS_RECORD *patlasEgressVCRecord) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 87 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Valid States Inputs ATLS_ACTIVE atlas patlasEgressVCRecord : device handle (from atlasAdd) : connection information structure Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Modifying PHY Id Fields: atlasModifyEgressVcPhyId This function modifies just the PHY Id field of the VC Record. Prototype INT4 atlasModifyEgressVcConfiguration (ATLAS atlas,sATLS_EGRESS_RECORD *patlasEgressVCRecord, UINT1 newPhyId) ATLS_ACTIVE Valid States Inputs atlas patlasEgressVCRecord : device handle (from atlasAdd) : connection information structure newPhyId: new PHY ID Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Modifying VP/VCI Fields: atlasModifyEgressVcVpiVci This function modifies just the VPI and VCI field of the VC Record. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 88 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasModifyEgressVcConfiguration (ATLAS atlas,sATLS_EGRESS_RECORD *patlasEgressVCRecord, UINT2 newVpi, UINT2 newVci) ATLS_ACTIVE Valid States Inputs atlas patlasEgressVCRecord newVci newVpi : device handle (from atlasAdd) : connection information structure : new VCI : new VPI Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST Getting Egress VC Configuration: atlasReadEgressConfig This function gets Egress VC Configuration. This function returns the following VC egress table fields: Row 0 : Active, NNI Row 1 : Cos enable. Row 2 : status, internal Status Row 3 : configuration Prototype INT4 atlasReadEgressConfig(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_CONFIG *pConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : configuration information structure. Outputs pConfig Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 89 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Egress VC Configuration: atlasWriteEgressConfig This function modifies the Egress VC Configuration of an existing connection; the following VC Egress table fields are updated: Row 0 : Active, NNI Row 1 : Cos enable Row 2 : status, internal Status Row 3 : configuration Prototype INT4 atlasWriteEgressConfig(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_CONFIG *pConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pConfig : device handle (from atlasAdd) : index to the VC table record. : configuration information structure. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Getting Egress VC OAM Configuration: atlasReadEgressOAMConfig This function gets the Egress VC OAM configuration. This function returns the following VC egress table field : Row 2 : OAM configuration. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 90 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasReadEgressOAMConfig(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_OAMCONFIG *pOamConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : OAM config information structure. Outputs Returns pOamConfig ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Egress VC OAM Configuration: atlasWriteEgressOAMConfig This function modifies the Egress VC OAM configuration; the following VC egress table field is updated: Row 2 : OAM configuration Prototype INT4 atlasWriteEgressOAMConfig(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_OAMCONFIG *pOamConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pOamConfig : device handle (from atlasAdd) : index to the VC table record. : OAM config information structure. Outputs None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 91 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Getting Egress VC OAM Defect: atlasReadEgressOAMDefect This function gets the Egress VC OAM Defect configuration; it returns The contents of row 8 to row 15. Prototype INT4 atlasReadEgressOAMDefect(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_OAMDEFECT *pOamDefect) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : OAM defect config information structure Outputs pOamDefect Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Egress VC OAM Defect: atlasWriteEgressOAMDefect This function modifies the Egress VC OAM Defect configuration. The contents of row 8 to row 15 is updated. Prototype INT4 atlasWriteEgressOAMDefect(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_OAMDEFECT *pOamDefect) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 92 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas u2VcId pOamDefect : device handle (from atlasAdd) : index to the VC table record. : OAM defect config information structure Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Egress VC VPC Pointer: atlasWriteEgressVpcPointer This function modifies the Egress VC VPC pointer field in row 1. Prototype INT4 atlasWriteEgressVpcPointer(ATLAS atlas, UINT2 u2VcId, UINT2 u2Vpc) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId u2Vpc : device handle (from atlasAdd) : index to the VC table record. : VPC pointer value to be written in the egress VC table. Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 93 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Activating/Deactivating Egress VC CC support: atlasWriteEgressCCActivation This function modifies the Egress VC CC OAM support configuration. The contents of OAM configuration in row 2 is updated. Prototype INT4 atlasWriteEgressCCActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId segment endToEnd : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Egress VC AIS support: atlasWriteEgressAISActivation This function modifies the Egress VC AIS OAM support configuration. The contents of OAM configuration field in rowe 2 is updated. Prototype INT4 atlasWriteEgressAISActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 94 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas u2VcId segment endToEnd : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Egress VC RDI support: atlasWriteEgressRDIActivation This function modifies the Egress VC RDI OAM support configuration. The contents of OAM configuration field in row 2 is updated. Prototype INT4 atlasWriteEgressRDIActivation(ATLAS atlas, UINT2 u2VcId, UINT1 segment, UINT1 endToEnd) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId segment endToEnd : device handle (from atlasAdd) : index to the VC table record. : Segment activation flag (1 = activate 0 = deactivate). : Segment activation flag (1 = activate, 0 = deactivate). Outputs None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 95 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT 5.9 Performance monitoring sessions This section defines functions that can be used to setup and activate PM sessions. PM Session Allocation Performance Monitoring dynamically allocates PM Session Ids. To do this, it maintains a list of free PM Session Ids, one for each of the four Banks of PM Sessions. The driver implements four arrays of Boolean values that identify whether or not a PM Session is free. The PM Session Id is used to index into the array. The In/EgressBank1/2PMFree arrays contain 128 elements. The driver also maintains the current number of free PM Sessions and an index to the next free PM Session Id. Allocating Free PM Record Ids: atlasGetIngressBank1PMId This function allocates a free PM Record Id from the Ingress-Bank-1 free list. Prototype Valid States Inputs Outputs INT4 atlasGetIngressBank1PMId (ATLAS atlas,UINT1 *pmSessionId) ATLS_ACTIVE atlas : device handle (from atlasAdd) : address of where to put the allocated PM Session Id pmSessionId Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_NOT_FREE Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 96 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Allocating Free PM Record Ids: atlasGetIngressBank2PMId This function allocates a free PM Record Id from the Ingress-Bank-2 free list. Prototype Valid States Inputs Outputs INT4 atlasGetIngressBank2PMId (ATLAS atlas,UINT1 *pmSessionId) ATLS_ACTIVE atlas : device handle (from atlasAdd) : address of where to put the allocated PM Session Id pmSessionId Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_NOT_FREE Allocating Free PM Record Ids: atlasGetEgressBank1PMId This function allocates a free PM Record Id from the Egress-Bank-1 free list. Prototype Valid States Inputs Outputs INT4 atlasGetEgressBank1PMId (ATLAS atlas,UINT1 *pmSessionId) ATLS_ACTIVE atlas : device handle (from atlasAdd) : address of where to put the allocated PM Session Id pmSessionId Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_NOT_FREE Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 97 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Allocating Free PM Record Ids: atlasGetEgressBank2PMId This function allocates a free PM Record Id from the Egress-Bank-2 free list. Prototype Valid States Inputs Outputs INT4 atlasGetEgressBank2PMId (ATLAS atlas,UINT1 *pmSessionId) ATLS_ACTIVE atlas : device handle (from atlasAdd) : address of where to put the allocated PM Session Id pmSessionId Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_NOT_FREE Freeing PM Record Ids: atlasFreeIngressBank1PMId This function frees a PM Record Id back to the Ingress-Bank-1 free list. There is no validation that this session Id is not in use, nor that it is not already on the free list. Prototype Valid States Inputs INT4 atlasFreeIngressBank1PMId (ATLAS atlas,UINT1 pmSessionId) ATLS_ACTIVE atlas pmSessionId : device handle (from atlasAdd) : Id of PM session to free Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_SESSION_INDEX_RANGE Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 98 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Freeing PM Record Ids: atlasFreeIngressBank2PMId This function frees a PM Record Id back to the Ingress-Bank-2 free list. There is no validation that this session Id is not in use, nor that it is not already on the free list. Prototype Valid States Inputs INT4 atlasFreeIngressBank2PMId (ATLAS atlas,UINT1 pmSessionId) ATLS_ACTIVE atlas pmSessionId : device handle (from atlasAdd) : Id of PM session to free Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_SESSION_INDEX_RANGE Freeing PM Record Ids: atlasFreeEgressBank1PMId This function frees a PM Record Id back to the Egress-Bank-1 free list. There is no validation that this session Id is not in use, nor that it is not already on the free list. Prototype Valid States Inputs INT4 atlasFreeEgressBank2PMId (ATLAS atlas,UINT1 pmSessionId) ATLS_ACTIVE atlas pmSessionId : device handle (from atlasAdd) : Id of PM session to free Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_SESSION_INDEX_RANGE Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 99 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Freeing PM Record Ids: atlasFreeEgressBank2PMId This function frees a PM Record Id back to the Egress-Bank-2 free list. There is no validation that this session Id is not in use, nor that it is not already on the free list. Prototype Valid States Inputs INT4 atlasFreeEgressBank2PMId (ATLAS atlas,UINT1 pmSessionId) ATLS_ACTIVE atlas pmSessionId : device handle (from atlasAdd) : Id of PM session to free Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_PM_SESSION_INDEX_RANGE Writing PM Records: atlasWriteIngressBank1PMConfig This function writes a PM record into the Internal Performance Monitoring Table. Prototype INT4 atlasWriteIngressBank1PMConfig (ATLAS atlas,UINT1 pmSessionId,UINT2 pmConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas pmSessionId pmConfig : device handle (from atlasAdd) : determines session Id to access (0127) : new PM configuration word Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 100 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Writing PM Records: atlasWriteIngressBank2PMConfig This function writes a PM record into the Internal Performance Monitoring Table. Prototype INT4 atlasWriteIngressBank2PMConfig (ATLAS atlas,UINT1 pmSessionId,UINT2 pmConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas pmSessionId pmConfig : device handle (from atlasAdd) : determines session Id to access (0127) : new PM configuration word Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Writing PM Records: atlasWriteEgressBank1PMConfig This function writes a PM record into the Internal Performance Monitoring Table. Prototype INT4 atlasWriteEgressBank1PMConfig (ATLAS atlas,UINT1 pmSessionId,UINT2 pmConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas pmSessionId pmConfig : device handle (from atlasAdd) : determines session Id to access (0127) : new PM configuration word Outputs None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 101 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Writing PM Records: atlasWriteEgressBank2PMConfig This function writes a PM record into the Internal Performance Monitoring Table. Prototype INT4 atlasWriteEgressBank2PMConfig (ATLAS atlas,UINT1 pmSessionId,UINT2 pmConfig) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas pmSessionId pmConfig : device handle (from atlasAdd) : determines session Id to access (0127) : new PM configuration word Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Reading PM Records: atlasReadIngressBank1PMRecord This function reads a PM record from the Internal Ingress Bank 1 Performance Monitoring Table. Prototype INT4 atlasReadIngressBank1PMRecord ( ATLAS atlas,UINT1 pmSessionId, UINT1 clearOnRead, sATLS_PM_RECORD *pmRecord) ATLS_INIT, ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 102 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas clearOnRead pmSessionId : device handle (from atlasAdd) : 0 - registers not cleared upon read : 1 - registers cleared upon read : determines session Id to access (0127), : pointer to pmRecord to be filled in. Outputs Returns pmRecord ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Reading PM Records: atlasReadIngressBank2PMRecord This function reads a PM record from the Internal Ingress Bank 2 Performance Monitoring Table. Prototype INT4 atlasReadIngressBank2PMRecord ( ATLAS atlas,UINT1 pmSessionId, UINT1 clearOnRead, sATLS_PM_RECORD *pmRecord) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas clearOnRead pmSessionId : device Handle (from atlasAdd) : 0 - registers not cleared upon read : 1 - registers cleared upon read : determines session Id to access (0127), : pointer to pmRecord to be filled in. Outputs Returns pmRecord ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 103 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Reading PM Records: atlasReadEgressBank1PMRecord This function reads a PM record from the Internal Egress Bank 1 Performance Monitoring Table. Prototype INT4 atlasReadEgressBank1PMRecord ( ATLAS atlas,UINT1 pmSessionId, UINT1 clearOnRead, sATLS_PM_RECORD *pmRecord) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas clearOnRead pmSessionId : device handle (from atlasAdd) : 0 - registers not cleared upon read : 1 - registers cleared upon read : determines session Id to access (0127), : pointer to pmRecord to be filled in. Outputs Returns pmRecord ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Reading PM Records: atlasReadEgressBank2PMRecord This function reads a PM record from the Internal Egress Bank 2 Performance Monitoring Table. Prototype INT4 atlasReadEgressBank2PMRecord ( ATLAS atlas,UINT1 pmSessionId, UINT1 clearOnRead, sATLS_PM_RECORD *pmRecord) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas clearOnRead pmSessionId : device handle (from atlasAdd) : 0 - registers not cleared upon read : 1 - registers cleared upon read : determines session Id to access (0127), : pointer to pmRecord to be filled in. Outputs pmRecord Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 104 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PM_SESSION_ID Getting Ingress VC PM parameters: atlasReadIngressPM This function gets the Ingress VC PM configuration. This function returns the following VC ingress table fields : Row 0 : pmActive2, pmActive1 Row 1 : pmAddr2, pmAddr1. Prototype INT4 atlasReadIngressPM(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_PM *pPM) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : PM config information structure. Outputs Returns pPM ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Ingress VC PM parameters: atlasWriteIngressPM This function modifies the Ingress VC PM configuration; the following VC ingress table fields are updated : Row 0 : pmActive2, pmActive1 Row 1 : pmAddr2, pmAddr1. Prototype INT4 atlasReadIngressPM(ATLAS atlas, UINT2 u2VcId, sATLS_INGRESS_PM *pPM) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 105 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Valid States Inputs ATLS_INIT, ATLS_ACTIVE atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : PM config information structure. Outputs Returns pPM ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Ingress VC PM sessions: atlasWriteIngressPMActivation This function activates/deactivates the Ingress VC PM session. Prototype INT4 atlasWriteIngressPMActivate(ATLAS atlas, UINT2 u2VcId, UINT1 pm1, UINT1 pm2) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId pm1 pm2 : device handle (from atlasAdd) : index to the VC table record. : PM1 activation flag (1 = activate, 0 = deactivate) : PM2 activation flag (1 = activate, 0 = deactivate) Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 106 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Modifiying Ingress PM Parameters: atlasModifyIngressVcPM This function modifies the Performance Monitoring parameters of an existing Ingress VC. This allows the association of PM sessions with an Ingress VC; it also allows the enable/disable of Performance Monitoring for the connection. Only performance monitoring parameters are updated. All other fields are ignored. Row 1: PmActive2, pmAddr2, pmActive1, pmAddr1 Prototype INT4 atlasModifyIngressVcPM (ATLAS atlas, sATLS_INGRESS_RECORD *patlasIngressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasIngressVCRecord : device handle (from atlasAdd) : connection information structure. Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_PRIMARY_KEY_UNEXPECTED ATLS_ERR_PRIMARY_ADDR_RANGE ATLS_ERR_SECONDARY_ADDR_RANGE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_INVALID_VC_RECORD Modifying Egresss PM Parameters: atlasModifyEgressVcPM This function modifies the Performance Monitoring parameters of an existing connection. This allows the association of PM sessions with an Egress VC; it also allows the enable/disable of Performance Monitoring for the connection. Only performance monitoring parameters are updated. All other fields are ignored. Row 0: pmActive2, pmactive, Row 1: pmAddr2, pmAddr1 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 107 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Prototype INT4 atlasModifyEgressVcPM (ATLAS atlas,sATLS_EGRESS_RECORD *patlasEgressVCRecord) ATLS_ACTIVE Valid States Inputs atlas patlasEgressVCRecord : device handle (from atlasAdd) : connection information structure Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID ATLS_ERR_INVALID_FIELDA ATLS_ERR_INVALID_FIELDB ATLS_ERR_EVC_RECORD_ADDR_RANGE ATLS_ERR_EVC_RECORD_NOT_EXIST ATLS_ERR_INVALID_VC_RECORD Getting Egress VC PM parameters: atlasReadEgressPM This function gets the Egress VC PM configuration. This function returns the following VC egress table fields : Row 0 : pmActive2, pmActive1 Row 1 : pmAddr2, pmAddr1 Prototype INT4 atlasReadEgressPM(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_PM *pPM) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : PM config information structure. Outputs pPM Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 108 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Returns ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Modifying Egress VC PM parameters: atlasWriteEgressPM This function modifies the Egress VC PM configuration; the following VC egress table fields are updated : Row 0: pmActive2, pmActive1. Row 1: pmAddr2, pmAddr1. Prototype INT4 atlasWriteEgressPM(ATLAS atlas, UINT2 u2VcId, sATLS_EGRESS_PM *pPM) ATLS_INIT, ATLS_ACTIVE Valid States Inputs atlas u2VcId : device handle (from atlasAdd) : index to the VC table record. : PM config information structure. Outputs Returns pPM ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT Activating/Deactivating Egress VC PM sessions: atlasWriteEgressPMActivation This function activates/deactivates the Egress VC PM session. Prototype INT4 atlasWriteEgressPMActivate(ATLAS atlas, UINT2 u2VcId, UINT1 pm1, UINT1 pm2) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 109 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Valid States Inputs ATLS_INIT, ATLS_ACTIVE atlas u2VcId pm1 pm2 : device handle (from atlasAdd) : index to the VC table record. : PM1 activation flag (1 = activate, 0 = deactivate) : PM2 activation flag (1 = activate, 0 = deactivate) Outputs Returns None ATLS_SUCCESS, ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_IVC_VC_NOT_EXIST ATLS_ERR_REG_POLL_TIMED_OUT ATLS_ERR_MOD_NOT_INIT 5.10 Cell Insertion/Extraction This section defines functions that can be used to both insert cells into and remove cells from the MicroProcessor Cell interface. As the Cell FIFOs are of limited depth, the user is responsible for processing received cells in a timely manner. Writing Ingress Cell Buffer Structures: atlasInsertIngressCell This function writes the cell buffer structure passed by the user into the ATLAS microprocessor ingress cell interface which is then transmitted by the device. This call will fail if the transmit FIFO is full. Prototype INT4 atlasInsertIngressCell(ATLAS atlas, UINT1 *psCellBuffer, sATLS_CELL_INS_CTRL *psCtrl) ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 110 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs atlas psCellBuffer psCtrl : device handle (from atlasAdd) : pointer to the buffer that contains the cell. : controls the insertion of the cell into the ingress output Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_CELL_INS_CTRL ATLS_ERR_ING_MUP_INS_BUSY Reading Cells From Microprocessor Ingress: atlasExtractIngressCell This function reads a cell from the microprocessor ingress FIFO for the specified device (if a cell is present). Users should keep reading cells until there are no more cells in the FIFO. Prototype INT4 atlasExtractIngressCell (ATLAS atlas,UINT1 *psCellBuffer,UINT1 extPhyId,UINT1 *plength, UINT1 *pphyId) ATLS_ACTIVE Valid States Inputs atlas psCellBuffer extPhyId : device handle (from atlasAdd) : pointer to the buffer that will contain the cell. : if non-zero, replace HEC with the PHYID; if zero, do not replace HEC with the PHYID : length of cell extracted : phyId Outputs pLength pphyId Returns ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE ATLS_NO_CELL ATLS_ERR_INVALID_CELL_LENGTH Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 111 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Reading Cells From Microprocessor Ingress (OAM cells only): atlasRxCell This function reads a cell from the microprocessor ingress FIFO for the specified device (if a cell is present) and process it based on its OAM type. Prototype Valid States Inputs Outputs Returns INT4 atlasRxCell(ATLAS atlas) ATLS_ACTIVE atlas : device handle (from atlasAdd) None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE Writing Egress Cell Buffer Structures: atlasInsertEgressCell This function writes the cell buffer structure passed by the user into the ATLAS that is then transmitted by the device. This call will fail if the transmit FIFO is full. Prototype INT4 atlasInsertEgressCell(ATLAS atlas,UINT1 *psCellBuffer,sATLS_CELL_INS_CTRL *psCtrl) ATLS_ACTIVE Valid States Inputs atlas psCellBuffer psCtrl : device handle (from atlasAdd) : pointer to the buffer that contains the cell. : controls the insertion of the cell into the egress output. Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_CELL_INS_CTRL ATLS_ERR_EG_MUP_INS_BUS Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 112 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Reading Cells from Microprocessor Egress: atlasExtractEgressCell This function reads a cell from the microprocessor egress FIFO for the specified device (if a cell is present). Users should keep reading cells until no more cells are available. Prototype INT4 atlasExtractEgressCell (ATLAS atlas, UINT1 *psCellBuffer,UINT1 extPhyId, UINT1 *plength, UINT1 *pphyId) ATLS_ACTIVE Valid States Inputs atlas psCellBuffer extPhyId : device handle (from atlasAdd) : pointer to the buffer that will contain the cell. : if non-zero, replace HEC with the PHYID; if zero, do not replace HEC with the PHYID : length of cell extracted. : phyId Outputs pLength phyId Returns ATLS_SUCCESS ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_STATE ATLS_NO_CELL ATLS_ERR_INVALID_CELL_LENGTH 5.11 Per-PHY Policing This set of functions provides access to the Internal Per-PHY Policing RAM. Writing Internal Per-PHY Policing Contents: atlasWritePerPHYPolicing This function writes the internal Per-PHY Policing RAM contents. Prototype INT4 atlasWritePerPHYPolicing(ATLAS atlas,UINT1 phyId, sATLS_PER_PHY_POLICING *pperPhyPolicing) ATLS_ACTIVE Valid States Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 113 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs altas phyId pperPhyPolicing : device handle (from atlasAdd) : identifies the PHY device : the new per PHY policing record Outputs Returns None ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID Reading Internal Per-PHY Policing Contents: atlasReadPerPHYPolicing This function reads the internal Per-PHY Policing RAM contents. Prototype INT4 atlasReadPerPHYPolicing(ATLAS atlas,UINT1 phyId, sATLS_PER_PHY_POLICING *pperPhyPolicing) ATLS_ACTIVE Valid States Inputs atlas phyId : device handle (from atlasAdd) : identifies the PHY device : the new per PHY policing record Outputs Returns pperPhyPolicing ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_ERR_INVALID_PHYID 5.12 Statistics This set of functions provides access to device counters and PHY counters, and to status information maintained by the device. The Static configuration of the counters, latch-high or rollover, is performed via the Initialization vector. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 114 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface The ATLAS device will indicate when counters are half full. It is the user's responsibility to ensure that they are read before any information is lost. Reading Device Wide Counters: atlasGetDeviceCounts This function reads the Device Wide counters and writes them into the Counter Structure specified. Prototype INT4 atlasGetDeviceCounts (ATLAS atlas, sATLS_AGGR_COUNTS *patlasAggrCounters, UINT1 clearOnRead) ATLS_ACTIVE Valid States Inputs atlas clearOnRead : device handle (from atlasAdd) : 0 - registers not cleared upon : 1 - registers cleared upon read : structure updated to reflect current device counters Outputs patlasAggrCounters Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE 5.13 Interrogation This section defines the functions available to the user that can be used to request information from the ATLAS device. These functions will typically be used after the ATLAS device has indicated, via the Indication Callback function and associated status, that this information is available. Reading Ingress VC Table Changes: atlasGetIngressVCTableCOS This function reads the Ingress VC Table Change of Connection Status FIFO Registers and returns their value. The user should call this function until the FIFO is empty. Prototype Valid States INT4 atlasGetIngressVCTableCOS (ATLAS atlas, UINT2 *pCOS) ATLS_ACTIVE Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 115 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Inputs Outputs atlas : device handle (from atlasAdd) : address to write Change Of State data pCOS Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_COS_EMPTY Reading Egress VC Table Changes: atlasGetEgressVCTableCOS This function reads the Egress VC Table Change of Connection Status FIFO Registers and returns their values. The user should call this function until the FIFO is empty Note: This function can only be called from the ACTIVE state. Prototype Valid States Inputs Outputs INT4 atlasGetEgressVCTableCOS (ATLAS atlas,UINT2 *pCOS) ATLS_ACTIVE atlas : device handle (from atlasAdd) : address to write Change Of State data pCOS Returns ATLS_SUCCESS ATLS_ERR_INVALID_STATE ATLS_ERR_INVALID_DEVICE ATLS_COS_EMPTY 5.14 Interrupt Servicing The ATLAS driver provides an ISR as well as a DPR for interrupt servicing. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 116 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface Reading Interrupt Status Registers: atlasISR This function reads the interrupt status registers of the interrupting device and outputs the status information for later interpretation and processing by sysAtlasIntHandler. sysAtlasIntHandler will typically request the Deferred Processing Routine (DPR) to process the interrupt at a later time. If this function returns an ATLS_INTERRUPTS_OCCURRED value the sysAtlasIntHandler should send the associated Interrupt Status to the DPR Task using RTOS mechanisms. Returning a value from this function enables it to be called directly by a system specific high priority, polling task. Only if an ATLS_INTERRUPTS_OCCURRED value is returned should the polling task send the status to the Deferred Processing routine. This function may make a callback directly to the user's Exception Callback if an exception condition has occurred. Exception conditions indicate device problems that should not occur in normal operation. The user should decode the indicated exceptions and take appropriate, systemspecific action as indicated. The DPR Indication callback indIndication is intended to process expected, normal-case indications of device operation. Prototype Valid States Inputs INT1 atlasISR(ATLAS atlas, sATLS_INT_STATUS *patlasIntStatus) ALL STATES atlas : device handle (from atlasAdd) Outputs Returns patlasIntStatus : interrupt status information : no interrupts occurred : one or more interrupts occurred. ATLS_SUCCESS ATLS_INTERRUPTS_OCCURRED Processing Interrupt Status Information: atlasDPR This function processes interrupt status information queued to it by the ISR. Processing involves ensuring an interrupt is indicated and calling the user's indication function indIndication with the indicated Interrupt Status. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 117 S/UNI-ATLAS(PM7324) Driver Manual Application Programming Interface The user should decode the interrupt status and take appropriate, system-specific action on the indicated conditions. Prototype Valid States Inputs void atlasDPR(ATLAS atlas,sATLS_INT_STATUS *patlasIntStatus) ALL STATES atlas patlasIntStatus : device handle (from atlasAdd) : interrupt status information Outputs Returns None None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 118 S/UNI-ATLAS(PM7324) Driver Manual Hardware Interface 6 6.1 HARDWARE INTERFACE Device I/O Reading Specific Address Contents: sysAtlasRawRead This function is a low-level, system-specific macro, written in the format of a function, that can be used to read the contents of a specific ATLAS register. This macro should be modified by the user to reflect the system addressing logic. The following definition reflects the ATLAS registers presenting on 32-bit address boundaries, and the register value presenting in the bottom 16 bits. Prototype Valid States Inputs #define sysAtlasRawRead(baseAddr,regId,pval),sysAtlasRawRead(UINT1 *baseAddr, UINT2 regId, UINT2 *pval) ALL STATES baseAddr regId : address of base register for ATLAS (Register 0) : Id of Register to read : value read Outputs pval Writing Specific Address Contents: sysAtlasRawWrite This function is a low-level, system-specific macro, written in the format of a function, that can be used to write the contents of a specific ATLAS register. This macro should be modified by the user to reflect the system addressing logic. The following definition reflects the ATLAS registers presenting on 32-bit address boundaries, and the register value presenting in the bottom 16 bits. Prototype Valid States Inputs #define sysAtlasRawWrite(baseAddr,regId,val), sysAtlasRawWrite(UINT1 *baseAddr, UINT2 regId, UINT2 val) ALL STATES baseAddr regId val : address of base register for ATLAS (Register 0) : Id of Register to Write : value to write Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 119 S/UNI-ATLAS(PM7324) Driver Manual Hardware Interface Outputs None Detecting New Devices: sysAtlasDeviceDetect This function uses user context information to detect new ATLAS devices. The atlasAdd API function calls it. This function is system specific. Prototype void syAtlasDeviceDetect(ATLS_USR_CTXT userContext, void **pdevBaseAddr) Inputs Outputs Returns userContext : user Information Context : updated to reflect Base Address of device pdevBaseAddr ATLS_SUCCESS ATLS_NO_DEVICE 6.2 Interrupt servicing ISR Installation and removal The following system specific routines install and remove the interrupt handlers and deferred processing routines for the ATLAS devices. Installing Process Vector Tables: sysAtlasIntInstallHandler This function installs sysAtlasIntHandler in the processor vector table, spawns the sysAtlasDPRtask routines as a task, and creates a communication channel (for example, a message queue) between the two. This function could also choose to create the high priority polling task rather than install the ISR if the polling model was to be used. Prototype Inputs void sysAtlasIntInstallHandler(void) None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 120 S/UNI-ATLAS(PM7324) Driver Manual Hardware Interface Outputs Returns None None Deleting Message Queues: sysAtlasIntRemoveHandler This function deletes the sysAtlasDPRtask and associated message queue. It also removes the sysAtlasIntHandler routine from the processor's interrupt vector table. If the polling model was in use, this task would delete the high priority polling task. Prototype Inputs Outputs Returns void sysAtlasIntRemoveHandler(void) None None None System specific ISR and DPR routines The system-specific ISR and DPR routines, sysAtlasIntHandler and sysAtlasDPRtask, are installed by the sysAtlasIntInstallHandler routine. Enabling Interrupt Processing: sysAtlasIntHandler This routine is invoked when one or more ATLAS devices indicate interrupts. This routine invokes atlasISR for each device for which interrupt processing is enabled. For each device indicating an interrupt, this routine queues the interrupt status information for later processing by sysAtlasDPRtask. If there are several ATLAS device being managed there may be several messages queued from the atlasISR to the sysAtlasDPRtask. Prototype Inputs void sysAtlasIntHandler(void) None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 121 S/UNI-ATLAS(PM7324) Driver Manual Hardware Interface Outputs Returns None None Retrieving Interrupt Status Information: sysAtlasDPRtask This routine is spawned as a separate task within the RTOS. It retrieves interrupt status information saved for it by the sysAtlasIntHandler routine and invokes the atlasDPR routine indicating the appropriate device. Prototype Inputs Outputs Returns void sysAtlasDPRtask(void) None None None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 122 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface 7 7.1 RTOS INTERFACE Service Calls The ATLAS driver uses the following RTOS services. Memory Allocation/De-allocation Allocating Bytes: sysAtlasMemAlloc This function allocates a specified number of bytes. Prototype Inputs Outputs Returns void *sysAtlasMemAlloc(UINT2 alloc_size) alloc_size : number of bytes to be allocated None Pointer to first byte of allocated memory NULL pointer (memory allocation failed) De-Allocating Memory: sysAtlasMemFree This function de-allocates memory allocated using ATLASMemAlloc. Prototype Inputs Outputs Returns void sysAtlasMemFree(void *addr) addr : pointer to memory to be freed None None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 123 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Setting Memory to a specified value: sysAtlasMemSet This function is used to zero memeory. The driver uses this to reset data-structures. Prototype Inputs VOID sysAtlasMemSet(VOID *ptr, UINT1 byte, UINT4 byteCount) ptr byte bytecount : pointer to start of memory to set : byte value to set in memory : the number of bytes, starting at ptr, to set. Outputs Returns None None 7.2 Indication Callbacks The ATLAS driver uses the following indication routines to notify the applications of events within the device and driver. These routines need to be implemented by the user. The callback functions will be passed a copy of the full Interrupt Status Registers. The ATLAS device has many possible indications. These are categorized into two groups. System Exceptions (SE). These indicate device failure conditions. This indication will be made in the context of the device ISR. Therefore no RTOS blocking calls should be made. Application Indications (AI). These indicate device conditions that require application attention. When the atlasISR is invoked it will examine the Interrupt status mask to decide whether a System Exception indication should be raised. If so, the ISR will call the indException callback directly. If there is any interrupt status indicated, the altasISR function will indicate this to the user supplied function sysAtlasIntHandler. This function should then pass the interrupt status to the atlasDPR function. If an interrupt notification has been passed from to the atlasDPR from the atlasISR, the atlasDPR will make the indIndication callback. Each callback function will be called with the applications context ID and the full Interrupt Status Register contents. The following Tables indicate which categories the Interrupt indications fall into. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 124 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Table 34: ATLAS Interrupt Reg #1 Categories Interrupt Name ATLS_INT_1_I_INVALI ATLS_INT_1_I_PTIVCII ATLS_INT_1_I_OAMERRI ATLS_INT_1_I_SEG_CCI ATLS_INT_1_I_END_CCI ATLS_INT_1_I_SEG_AISI ATLS_INT_1_I_END_AISI ATLS_INT_1_I_SEG_RDII ATLS_INT_1_I_END_RDII ATLS_INT_1_I_POLI ATLS_INT_1_I_XPOLI ATLS_INT_1_I_XFERI Category AI AI AI AI AI AI AI AI AI AI AI AI Table 35: ATLAS Interrupt Reg #2 Categories Interrupt Name ATLS_INT_2_I_FULLI ATLS_INT_2_I_UPFOVRI ATLS_INT_2_I_UPCAI ATLS_INT_2_I_INSRDYI ATLS_INT_2_I_RSOCI ATLS_INT_2_I_RPRTYI ATLS_INT_2_I_PCELLI ATLS_INT_2_I_SRCHERRI ATLS_INT_2_I_BCIFFULLI ATLS_INT_2_I_PHYPOLI ATLS_INT_2_I_PHYXPOLI ATLS_INT_2_I_COSFULLI ATLS_INT_2_I_XCOSI Category AI AI AI AI SE SE SE AI AI AI AI AI AI Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 125 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Table 36: ATLAS Interrupt Reg #3 Categories Interrupt Name ATLS_INT_3_I_SPRTYI[0] ATLS_INT_3_I_SPRTYI[1] ATLS_INT_3_I_SPRTYI[2] ATLS_INT_3_I_SPRTYI[3] ATLS_INT_3_I_SPRTYI[4] ATLS_INT_3_I_SPRTYI[5] ATLS_INT_3_I_SPRTYI[6] ATLS_INT_3_I_SPRTYI[7] ATLS_INT_3_E_SPRTYI[0] ATLS_INT_3_E_SPRTYI[1] ATLS_INT_3_E_SPRTYI[2] ATLS_INT_3_E_SPRTYI[3] Category SE SE SE SE SE SE SE SE SE SE SE SE Table 37: ATLAS Interrupt Reg #4 Categories Interrupt Name ATLS_INT_4_E_XFERI ATLS_INT_4_E_PTIVCII ATLS_INT_4_E_OAMERR ATLS_INT_4_E_SEG_CCI ATLS_INT_4_E_END_CCI ATLS_INT_4_E_Seg_AISI ATLS_INT_4_E_End_AISI ATLS_INT_4_E_Seg_RDII ATLS_INT_4_E_End_RDII ATLS_INT_4_E_FULLI ATLS_INT_4_E_UPFOVRI ATLS_INT_4_E_UPCAI ATLS_INT_4_E_INSRDYI ATLS_INT_4_E_IOVRI Category AI AI AI AI AI AI AI AI AI AI AI AI AI AI Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 126 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Interrupt Name ATLS_INT_4_E_PCELLI Category AI Table 38: ATLAS Interrupt Reg #5 Categories Interrupt Name ATLS_INT_5_E_ISOCI ATLS_INT_5_E_IPRTYI ATLS_INT_5_E_IWRENBI ATLS_INT_5_E_BCIFFULLI ATLS_INT_5_E_COSFULLI ATLS_INT_5_E_XCOSI ATLS_INT_5_E_SEARCHEI Category SE SE SE AI AI AI AI Callback Functions The following defines the callback functions that the user needs to provide. Informing the User of OAM Cell Processing: indOAMRx This function informs the user that a OAM cell has been processed (Loopback or Activation/Deactivation CC). This function will be called by the altasRxCell routine. Prototype void indOamRx(ATLS_USR_CTXT usrCtxt, INT4 u4OamType, UINT1 u1CmdFlag, INT4 arg1, INT4 arg2, INT4 result) Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 127 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Inputs usrCxt : user's context information for this ATLAS device : Indicates the type of the OAM cell ATLS_OAM_LPBK : Indicates a Loopback cell. ATLS_OAM_CC_ACT_DEACT : Indicates a u4OamType activation/deactivation CC cell u1CmdFlag : Indicates the type of cell received ATLAS_OAM_RESPONSE : An OAM response has been received (confirmation message) ATLAS_OAM_COMMAND : An OAM command has been received (activation/decativation) arg1 arg2 result : OAM function type. : The connection VC Id. : Indicates if the OAM processing has been succesful. Outputs Returns None None Requesting a Backward Connection Information from the User : indBackEci This function requests the backward connection information (needed for the OAM processing) to the user. This function will be called by the altasRxCell routine. Prototype void indBackEci(ATLS_USR_CTXT usrCtxt, UINT2 u2ICI, INT4 *pResult, UINT1 *pu1PhyId, UINT2 *pu2ECI) Inputs usrCxt u2ICI pResult pu1PhyId pu2ECI : user's context information for this ATLAS device : The connection ID of the forward OAM connection : The result of the request returned by the user. : The Phy ID of the backward connection returned by the user. : The backward connection VC ID returned by the user. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 128 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface Outputs Returns None None Informing the User of an Occurrence of a System Exception : indException This function informs the user that a System Interrupt/Exception has occurred. The user should process all indicated exceptions in this category. This function will be called by the altasISR routine. Note that this function, since it is called in the context of an ISR, should not make any blocking calls to an RTOS. This function should be used to process the interrupts that indicate a device exception. An exception is a condition that is not part of the standard operation of the device. All available interrupts/exceptions will be indicated in the status. Prototype void indException(ATLS_USR_CTXT usrCtxt, sATLS_INT_STATUS *intStatus, UINT1 arg1, UINT1 arg2, UINT1 arg3) Inputs usrCxt intStatus arg1 arg2 arg3 : user's context information for this ATLAS device : structure indicating all the ATLAS interrupts indicated. : not used. : not used. : not used. Outputs Returns None None Informing the User of an Occurrence of a Normal Interrupt : indIndication This function informs the user that a normal Interrupt indicating that user action is required has occurred. The user should process all indicated interrupts in this category. This function will be called by the altasDPR routine. This function should be used to process the interrupts that indicate the normal operation of the device. This can be microprocessor cell availability, counter overflow, etc. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 129 S/UNI-ATLAS(PM7324) Driver Manual RTOS interface All available interrupts/exceptions will be indicated in the status. Prototype Inputs void indIndication(ATLS_USR_CTXT usrCtxt, sATLS_INT_STATUS *intStatus) usrCxt intStatus : user's context information for this ATLAS device : structure indicating all the ATLAS interrupts indicated. Outputs Returns None None Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 130 S/UNI-ATLAS(PM7324) Driver Manual Porting the Driver 8 PORTING THE DRIVER This section outlines how to port the ATLAS device driver to your hardware and RTOS platform. Note: Because each platform and application is unique, this manual can only offer guidelines for porting the ATLAS driver. 8.1 Driver Source Files The C source files listed in Figure 8 contain the code for the ATLAS driver. You may need to modify the code or develop additional code. The code is in the form of constants, macros, and functions. For the ease of porting, the code is grouped into source files (src) and include files (inc). The src files contain the functions and the inc files contain the constants and macros. Figure 8: Driver Source Files atlsdrv src atls_api.c (contains all API functions) atls_api2.c (contains driver internal functions) atls.c (contains driver internal functions) atls2.c (contains driver internal functions) atls_hw.c (contians hardware related interface functions) atls_rtos.c (contains rtos related interface functions) atls_test.c (contains sample driver callback functions) inc atls.h (contains driver internal function prototypes) atls_api.h (contains data-structure definitions and prototypes) atls_cfg.h (contains platform specific macro definitions) atls_err.h (contains ATLAS error code definitions) atls_hw.h (contains prototype for platform specific device detection routine) atls_rtos.h (contains rtos interface function proto-types) atls_types.h (defines base types for use by ATLAS and the application) atls_test.h (contains callback functions prototypes) Makefile Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 131 S/UNI-ATLAS(PM7324) Driver Manual Porting the Driver 8.2 Driver Porting Procedures The following steps summarize how to port the ATLAS driver to your platform. The following sections describe these steps in more detail. Note: Because each platform and application is unique, this manual can only offer guidelines for porting the ATLAS driver. 8.3 Driver Porting Procedures The following procedures summarize how to port the ATLAS driver to your platform. The subsequent sections describe these procedures in more detail. Procedure 1: Port the driver's RTOS extensions (page 132): Procedure 2: Port the driver to your hardware platform (page 133): Procedure 3: Port the driver's application-specific elements (page 134): Procedure 4: Build the driver (page 135). Procedure 1 : Porting the Driver's RTOS Extensions The RTOS extensions encapsulate all RTOS specific services and data types used by the driver. The atls_rtos.h file contains data types and compiler-specific data-type definitions. It also contains macros for RTOS specific services used by the RTOS extensions. These RTOS extensions include: * * * Task management Message queues Memory Management In addition, you may need to modify functions that use RTOS specific services, such as utility and interrupt-event handling functions. The atls_rtos.c file contains the utility and interrupt-event handler functions that use RTOS specific services. To port the driver's RTOS extensions: 1. Modify the data types in atls_types.h. The number after the type identifies the data-type size. For example, UINT4 defines a 4-byte (32-bit) unsigned integer. Substitute the compiler types that yield the desired types as defined in this file. 2. Modify the RTOS specific services in atls_rtos.h. Redefine the following macros to the corresponding system calls that your target system supports: Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 132 S/UNI-ATLAS(PM7324) Driver Manual Porting the Driver Service Type Memory Macro Name sysAtlasMemCopy Description Copies the memory block from src to dest 3. Modify the utilities and interrupt services that use RTOS specific services in the atls_rtos.c. The atls_rtos.c file contains the utility and interrupt-event handler functions that use RTOS specific services. Refer to the function headers in this file for a detailed description of each of the functions listed below: Service Type Memory Interrupt Function Name sysAtlasMemAlloc sysAtlasMemFree sysAtlasIntInstallHandler sysAtlasIntRemoveHandler sysAtlasIntHandler sysAtlasDPRTask Description Allocates the memory block Frees the memory block Installs the interrupt handler for the RTOS Removes the interrupt handler from the RTOS Interrupt handler for the ATLAS device Deferred process routine for interrupts Procedure 2: Porting the Driver to a Hardware Platform This section describes how to modify the ATLAS driver for your hardware platform. To port the driver to your hardware platform: 1. Modify the device detection function in the atls_hw.c file. The function sysAtlasDeviceDetect is implemented for a PCI platform. Modify it to reflect your specific hardware interface. Its purpose is to detect a ATLAS device based on a UsrContext input parameter. It returns two output parameters: The base address of the ATLAS device A pointer to the system-specific configuration information 2. Modify the low-level device read/write macros in the atls_cfg.h file. You may need to modify the raw read/write access macros (sysAtlasRawRead and sysAtlasRawWrite) to reflect your system's addressing logic. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 133 S/UNI-ATLAS(PM7324) Driver Manual Porting the Driver Procedure 3: Porting the Driver's Application-Specific Elements Application specific elements are configuration constants used by the API for developing an application. This section describes how to modify the application specific elements in the ATLAS driver. Before you port the driver's application-specific elements, ensure that you: 1. Port the driver's RTOS extensions 2. Port the driver to your hardware platform To port the driver's application-specific elements: 1. Define the following driver task-related constants for your RTOS-specific services in file atls_rtos.h and atls_cfg.h #Define ATLS_DPR_TASK_PRIORITY ATLS_DPR_TASK_STACK_SIZE ATLS_POLLING_DELAY Description Deferred Task (DPR) task priority DPR task stack size, in bytes Constant used in polling task mode, this constant defines the interval time in millisecond between each polling action Delay time in millisecond. When clearing the DPR loop active flag in the DPR task, this delay is used to gracefully shutdown the DPR task before deleting it. The queue message depth of the queue used for pass interrupt context between the ISR task and DPR task The maximum number of ATLAS devices in the system Default 85 4096 50 ATLS_TASK_SHUTDOWN_DELAY 10 ATLS_MAX_DPR_MSGS 10 ATLS_MAX_NUM_DEVS 1 2. Code the callback functions according to your application. There are four sample callback functions in the atls_test.c file. You can use these callback functions or you can customize them before using the driver. The driver will call these callback functions when an event occurs on the device. These functions must conform to the following prototypes: void indOamRx(ATLS_USR_CTXT usrCtxt, INT4 u4OamType, UINT1 u1CmdFlag, INT4 arg1, INT4 arg2, INT4 result) void indBackEci(ATLS_USR_CTXT usrCtxt, UINT2 u2ICI, INT4 *pResult, UINT1 *pu1PhyId, UINT2 *pu2ECI) 134 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual Porting the Driver void indIndication(ATLS_USR_CTXT usrCtxt, sATLS_INT_STATUS *intStatus) void indException(ATLS_USR_CTXT usrCtxt, sATLS_INT_STATUS *intStatus, UINT1 arg1, UINT1 arg2, UINT1 arg3) 3. The driver processes only two types of cells through the microprocessor port : OAM Loopback and CC Activation/Deactivation. If you want to process other types of cells through the microprocessor port, you should modify the atlasRXCell API in the atls_api2.c file. Procedure 4: Building the Driver This section describes how to build the ATLAS driver. To build the driver: 1. Modify the Makefile to reflect the absolute path of your code, your compiler and compiler options. 2. Choose from among the different compile options supported by the driver as per your requirements. 3. Compile the source files and build the ATLAS API driver library using your make utility. 4. Link the ATLAS API driver library to your application code. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 135 S/UNI-ATLAS(PM7324) Driver Manual Appendix: Coding Conventions APPENDIX: CODING CONVENTIONS This section describes the coding conventions used in the implementation of all PMC driver software. Variable Type Definitions Table 39: Variable Type Definitions Type UINT1 UINT2 UINT4 INT1 INT2 INT4 Description unsigned integer - 1 byte unsigned integer - 2 bytes unsigned integer - 4 bytes signed integer - 1 byte signed integer - 2 bytes signed integer - 4 bytes Naming Conventions Table 30 presents a summary of the naming conventions followed by all PMC driver software. A detailed description is then given in the following sub-sections. The names used in the drivers are verbose enough to make their purpose fairly clear. This makes the code more readable. Generally, the device's name or abbreviation appears in prefix. Table 40: Naming Conventions Type Macros Constants Structures API Functions Case Uppercase Uppercase Hungarian Notation Hungarian Notation Naming convention prefix with "m" and device abbreviation prefix with device abbreviation prefix with "s" and device abbreviation prefix with device name Examples mAtlas_WRITE ATLS_REG sATLS_INIT_VECTOR atlasAdd() Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 136 S/UNI-ATLAS(PM7324) Driver Manual Appendix: Coding Conventions Type Porting Functions Other Functions Variables Pointers to variables Global variables Case Hungarian Notation Hungarian Notation Hungarian Notation Hungarian Notation Hungarian Notation Naming convention prefix with "sys" and device name Examples sysAtlasRead() myOwnFunction() maxDevs prefix variable name with "p" pmaxDevs prefix with device name atlasGDD Macros The following list identifies the marcro conventions used in the driver code: Macro names can be uppercase. Words can be separated by an underscore. The letter `m' in lowercase is used as a prefix to specify that it is a macro, then the device abbreviation appears. Example: mAtlas_WRITE is a valid name for a macro. Constants The following list identifies the const ants conventions used in the driver code: Constant names can be uppercase. Words can be separated by an underscore. The device abbreviation can appear as a prefix. Example: ATLS_REG is a valid name for a constant. Structures The following list identifies the structures conventions used in the driver code: Structure names can be uppercase. Words can be separated by an underscore. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 137 S/UNI-ATLAS(PM7324) Driver Manual Appendix: Coding Conventions The letter `s' in lowercase can be used as a prefix to specify that it is a structure, then the device abbreviation appears. Example: sATLS_INIT_VECTOR is a valid name for a structure. Functions API Functions Naming of the API functions follows the hungarian notation. The device's full name in all lowercase can be used as a prefix. Example: atlasAdd() is a valid name for an API function. Porting Functions Porting functions correspond to all function that are HW and/or RTOS dependant. Naming of the porting functions follows the hungarian notation. The `sys' prefix can be used to indicate a porting function. The device's name starting with an uppercase can follow the prefix. Example: sysAtlasRead() is a hardware / RTOS specific. Other Functions Other Functions are all the remaining functions that are part of the driver and have no special naming convention. However, they can follow the hungarian notation. Example: myOwnFunction() is a valid name for such a function. Variables Naming of variables follows the hungarian notation. A pointer to a variable shall use `p' as a prefix followed by the variable name unchanged. If the variable name already starts with a `p', the first letter of the variable name may be capitalized, but this is not a requirement. Double pointers might be prefixed with `pp', but this is not required. Global variables are identified with the device's name in all lowercase as a prefix. Examples: maxDevs is a valid name for a variable, pmaxDevs is a valid name for a pointer to maxDevs, and atlasBaseAddress is a valid name for a global variable. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 138 S/UNI-ATLAS(PM7324) Driver Manual Appendix: Coding Conventions Note: Both pprevBuf and pPrevBuf are accepted names for a pointer to the prevBuf variable, and that both pmatrix and ppmatrix are accepted names for a double pointer to the variable matrix. File Organization Table 41 presents a summary of the file naming conventions. All file names must start with the device abbreviation, followed by an underscore and the actual file name. File names should convey their purpose with a minimum amount of characters. If a file size is getting too big one might separate it into two or more files, providing that a number is added at the end of the file name (e.g. atls_api1.c or atls_api2.c). There are 4 different types of files: The API file containing all the API functions The hardware file containing the hardware dependant functions The RTOS file containing the RTOS dependant functions The other files containing all the remaining functions of the driver Table 41: File Naming Conventions File Type API Hardware Dependant RTOS Dependant Other File Name atls_api1.c, atls_api.h atls_hw.c, atls_hw.h atls_rtos.c, atls_rtos.h atls_isr.c, atls_defs.h API Files The name of the API files must start with the device abbreviation followed by an underscore and `api'. Eventually a number might be added at the end of the name. Examples: atls_api1.c is the only valid name for the file that contains the first part of the API functions, atls_api.h is the only valid name for the file that contains all of the API functions headers. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 139 S/UNI-ATLAS(PM7324) Driver Manual Appendix: Coding Conventions Hardware Dependent Files The name of the hardware dependent files must start with the device abbreviation followed by an underscore and `hw'. Eventually a number might be added at the end of the file name. Examples: atls_hw.c is the only valid name for the file that contains all of the hardware dependent functions, atls_hw.h is the only valid name for the file that contains all of the hardware dependent functions headers. RTOS Dependant Files The name of the RTOS dependant files must start with the device abbreviation followed by an underscore and `rtos'. Eventually a number might be added at the end of the file name. Examples: atls_rtos.c is the only valid name for the file that contains all of the RTOS dependent functions, atls_rtos.h is the only valid name for the file that contains all of the RTOS dependent functions headers. Other Driver Files The name of the remaining driver files must start with the device abbreviation followed by an underscore and the file name itself, which should convey the purpose of the functions within that file with a minimum amount of characters. Examples: atls_isr.c is a valid name for a file that would deal with initialization of the device, atls_defs.h is a valid name for the corresponding header file. Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 140 S/UNI-ATLAS(PM7324) Driver Manual Acronyms ACRONYMS API: Application Programming Interface DDB: Device Data Block DIV: Device Initialization Vector DPR: Deferred Processing Routine FIFO: First in, first out GDD: Global driver database GPIC: PCI controller HCS: Header check sequence HDLC: High-level data link control ISR: Interrupt Service Routine MIV: Module Initialization Vector MVIP: Multi-vendor integration protocol PCI: Processor connection interface PHY: Physical layer RAPI: Receive Any-PHY packet interface RTOS: Real-Time operating system Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 141 S/UNI-ATLAS(PM7324) Driver Manual Index INDEX activating devices atlasActivate, 23, 61, 62 adding devices atlasAdd, 23, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 136, 138 atlasAddEgressDummyConnection, 66 alternate alternateEgressCellCount1, 47, 49 alternateEgressCellCount2, 47, 49 alternateIngressCellCount1, 42, 45 alternateIngressCellCount2, 42, 45 API, 16, 17, 18, 19, 20, 23, 24, 25, 28, 120, 134, 135, 136, 138, 139, 141 Application Programming Interface, 16, 18, 57, 141 APS, 36, 37 base address atlasBaseAddress, 138 buffer pPrevBuf, 139 prevBuf, 139 callbacks ATLS_IND_BACKWARD_ECI, 33 ATLS_IVC_AIS_DEFECT_LOCATI ON_SIZE, 42, 43, 48 ATLS_IVC_HEADER_SIZE, 41, 45 ATLS_MAX_DPR_MSGS, 134 ATLS_MAX_NUM_DEVS, 30, 134 ATLS_POLLING_DELAY, 134 ATLS_PRESENT, 31, 59, 60, 61, 63 ATLS_REG, 136, 137 ATLS_TASK_SHUTDOWN_DELAY , 134 ATLS_USR_CTXT, 31, 56, 59, 120, 127, 128, 129, 130, 134, 135 indication ATLS_IND_INDICATION, 33 ATLS_IND_OAM_RX, 33 ATLS_IND_SYS_EXCEPT, 33 initialization ATLS_INIT, 31, 61, 62, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110 interrupt ATLS_INT_1_I_END_AISI, 125 ATLS_INT_1_I_END_CCI, 125 ATLS_INT_1_I_END_RDII, 125 ATLS_INT_1_I_INVALI, 125 ATLS_INT_1_I_OAMERRI, 125 ATLS_INT_1_I_POLI, 125 ATLS_INT_1_I_PTIVCII, 125 ATLS_INT_1_I_SEG_AISI, 125 ATLS_INT_1_I_SEG_CCI, 125 ATLS_INT_1_I_SEG_RDII, 125 ATLS_INT_1_I_XFERI, 125 ATLS_INT_1_I_XPOLI, 125 ATLS_INT_2_I_BCIFFULLI, 125 ATLS_INT_2_I_COSFULLI, 125 ATLS_INT_2_I_FULLI, 125 ATLS_INT_2_I_INSRDYI, 125 ATLS_INT_2_I_PCELLI, 125 ATLS_INT_2_I_PHYPOLI, 125 ATLS_INT_2_I_PHYXPOLI, 125 ATLS_INT_2_I_RPRTYI, 125 ATLS_INT_2_I_RSOCI, 125 ATLS_INT_2_I_SRCHERRI, 125 ATLS_INT_2_I_UPCAI, 125 ATLS_INT_2_I_UPFOVRI, 125 ATLS_INT_2_I_XCOSI, 125 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 142 S/UNI-ATLAS(PM7324) Driver Manual ATLS_INT_3_E_SPRTYI, 126 ATLS_INT_3_I_SPRTYI, 126 ATLS_INT_4_E_End_AISI, 126 ATLS_INT_4_E_END_CCI, 126 ATLS_INT_4_E_End_RDII, 126 ATLS_INT_4_E_FULLI, 126 ATLS_INT_4_E_INSRDYI, 126 ATLS_INT_4_E_IOVRI, 126 ATLS_INT_4_E_OAMERR, 126 ATLS_INT_4_E_PCELLI, 127 ATLS_INT_4_E_PTIVCII, 126 ATLS_INT_4_E_Seg_AISI, 126 ATLS_INT_4_E_SEG_CCI, 126 ATLS_INT_4_E_Seg_RDII, 126 ATLS_INT_4_E_UPCAI, 126 ATLS_INT_4_E_UPFOVRI, 126 ATLS_INT_4_E_XFERI, 126 ATLS_INT_5_E_BCIFFULLI, 127 ATLS_INT_5_E_COSFULLI, 127 ATLS_INT_5_E_IPRTYI, 127 ATLS_INT_5_E_ISOCI, 127 ATLS_INT_5_E_IWRENBI, 127 ATLS_INT_5_E_SEARCHEI, 127 ATLS_INT_5_E_XCOSI, 127 interrupt servicing atls_isr.c, 139, 140 sCb, 32 calling ATLS_ACTIVE, 31, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116 ATLS_DPR_TASK_PRIORITY, 134 ATLS_EMPTY, 31, 59 Data Structures, 30, 55 DDB, 20, 21, 22, 23, 30, 31, 59, 60, 61, 141 deactivating devices atlasDeactivate, 62 Deferred Processing Routine, 17, 26, 117, 141 deleting devices atlasDelete, 23, 28, 60, 64 device altasDPR, 27, 129 altasISR, 124, 129 configuration deviceAddr, 31 maxDevs, 137, 138 numDevs, 30 pmaxDevs, 137, 138 Device Activation, 61 device data base configStatus, 50 masterCfg, 33 mPCellCfg, 33 OAMConfiguration, 41, 44, 47, 49 pMCfg, 33 policeConfiguration, 41, 44 constants ATLS_DDB, 31 Device Data Block, 21, 23, 30, 31, 55, 141 device diagnostics, 63 device initialization, 17, 24, 25, 60, 141 Device Initialization Vector, 141 device states, 23 DIV, 141 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 143 S/UNI-ATLAS(PM7324) Driver Manual DPR, 17, 19, 21, 26, 27, 28, 116, 117, 121, 134, 141 driver functions and features, 17 hardware interface, 19 interfaces, 18 library module, 20 porting procedures, 132 source files, 131 egress bank Bank1PMFree, 32 Bank2PMFree, 32 cell count egInCellCount, 54 cellcount egressCellCount1, 47, 49 egressCellCount2, 47, 49 configuration egBackOAMHOLCfg, 37 egBackOAMPacingCfg, 38 egBackRptCfg, 36 egCellDirCfg1, 37 egCellDirCfg2, 37 egCellProcCfg, 36 egCellRtgCfg, 36 egInCellCfg1, 36 egInCellCfg2, 36 egMPCExtCfg, 39 egMPCInsCfg, 39 egOutCellCfg1, 36 egOutCellCfg2, 36 egPacedAISCCCfg, 37 egPacedFwdPMCfg, 37 egPerPHYAISCfg1, 37 egPerPHYCountCfg, 38 egPerPHYRDICfg1, 37 egPerPHYRDICfg2, 37 egRDIBackOAMCfg, 36 egressCfg, 33 egVCCountingCfg2, 37 configuration record, 48 count egOutCellCount, 54 egPhyCLP0Count, 54 egPhyCLP1Count, 54 egPhyInvVciPtiCount, 55 egPhyOAMCount, 54 egPhyRMCount, 54 counts record, 49 DefLoc egDefLoc0_1, 37 egDefLoc10_11, 37 egDefLoc12_13, 38 egDefLoc14_15, 38 egDefLoc2_3, 37 egDefLoc4_5, 37 egDefLoc6_7, 37 egDefLoc8_9, 37 deleting atlasDeleteEgressConnection, 66, 67 disabling atlasDisableEgressVC, 73 enabling atlasEnableEgressVC, 73, 74 error count egPhyOAMRMErrorCount, 54 extracting atlasExtractEgressCell, 113 freeing atlasFreeEgressBank1PMId, 99 atlasFreeEgressBank2PMId, 99, 100 getting atlasGetEgressBank1PMId, 97 atlasGetEgressBank2PMId, 98 atlasGetEgressVc, 74 atlasGetEgressVcCounts, 72 atlasGetEgressVcStatus, 71, 72, 74 atlasGetEgressVCTableCOS, 116 inserting atlasInsertEgressCell, 112 key record, 49, 50 map egCellProcF4PMMap, 38 egCellProcF5PMMap, 38 max egVCTableMax, 38 MaxVCs, 31 modifying Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 144 S/UNI-ATLAS(PM7324) Driver Manual atlasModifyEgressVc, 87 atlasModifyEgressVcPhyId, 88 atlasModifyEgressVcPM, 107, 108 atlasModifyEgressVcVpiVci, 88 OAM egOAMDefType10_11, 37 egOAMDefType12_13, 37 egOAMDefType14_15, 37 egOAMDefType2_3, 37 egOAMDefType6_7, 37 egOAMDefType8_9, 37 OAM configuration record, 48, 49 OAM defect record, 48 patlasEgressVCRecord, 65, 66, 67, 71, 72, 74, 87, 88, 89, 108 PerPHY egPerPHYAPSInd1, 37 PM record, 49 PMThresh egPMThreshA1, 39 egPMThreshB1, 39 egPMThreshB2, 39 egPMThreshC1, 39 egPMThreshC2, 39 egPMThreshD1, 39 egPMThreshD2, 39 reading atlasReadEgressBank1PMRecord, 104 atlasReadEgressBank2PMRecord, 104 atlasReadEgressConfig, 89 atlasReadEgressCounts, 72 atlasReadEgressOAMConfig, 90, 91 atlasReadEgressOAMDefect, 92 atlasReadEgressPM, 108 record type, 46, 47 registers, 36 virtual connection evcFieldALength, 32 evcFieldAMask, 32 evcFieldBLength, 32 evcFieldBMask, 32 evcInitialised, 31 evcMaxFieldAValue, 32 evcMaxFieldBValue, 32 evcMaxPhyIdValue, 32 evcPhyIdLength, 32 evcPhyIdMask, 32 evcRecordAddrExists, 31 writing atlasWriteEgressAISActivation, 94 atlasWriteEgressBank1PMConfig, 101 atlasWriteEgressCCActivation, 94 atlasWriteEgressConfig, 90 atlasWriteEgressOAMConfig, 91 atlasWriteEgressOAMDefect, 92 atlasWriteEgressPM, 109 atlasWriteEgressPMActivation, 109 atlasWriteEgressRDIActivation, 95 atlasWriteEgressVpcPointer, 93 engress virtual connection defaultEvcRam, 32 defEgRecord, 33 fieldA, 40, 46, 47, 50, 65, 67, 68, 71, 72, 74, 75 fieldB, 40, 46, 47, 50, 65, 67, 68, 71, 72, 74, 75 FIFO, 25, 110, 111, 112, 113, 115, 116, 141 forceAddr, 64, 65, 66 frame count remainingFrameCount, 41, 45 GDB, 57 GDD, 21, 22, 30, 57, 141 getting atlasGetDeviceCounts, 115 Global Driver Data Base atlasGDD, 137 Global Driver Database, 21, 23, 30 GPIC, 141 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 145 S/UNI-ATLAS(PM7324) Driver Manual hardware atls_hw.c, 133, 139, 140 atls_hw.h, 139, 140 Hardware Access, 58 Hardware Interface, 19, 119 HCS, 141 HDLC, 141 Header Check Sequence, 141 ingress adding atlasAddIngressConnection, 63, 64 cell ingPacedFwdPMCell, 38 cellcount ingInCellCount, 53 configuration ingBackRptCfg, 34 ingCellCntCfg1, 36 ingCellCntCfg2, 36 ingCellProcCfg1, 34 ingCellProcCfg2, 36 ingCellRtgCfg, 35 ingConPolCfg1, 34 ingConPolCfg2, 35 ingConPolCfg3, 35 ingConPolCfg4, 35 ingConPolCfg5, 35 ingConPolCfg6, 35 ingConPolCfg7, 35 ingConPolCfg8, 35 ingFieldACfg, 34 ingFieldBCfg, 34 ingInCellCfg1, 34 ingInCellCfg2, 34 ingMPCExtCfg, 39 ingMPCInsCfg, 39 ingOAMCellGenCfg, 35 ingOutCellCfg1, 34 ingOutCellCfg2, 34 ingPerPHYAISCfg1, 35 ingPerPHYAISCfg2, 35 ingPerPHYAPSIndCfg1, 36 ingPerPHYAPSIndCfg2, 36 ingPerPHYCountCfg, 36 ingPerPHYRDICfg1, 35 ingPerPHYRDICfg2, 35 ingPHYPolCfg1_2, 34 ingPHYPolCfg3_4, 34 ingRDIBackOAMcfg, 34 ingressCfg, 33 ingSearchCfg, 34 configuration record, 43 count ingPhyCLP0Count, 54 ingPhyCLP1Count, 54 ingPhyInvVpiVciPtiCount, 54 ingPhyNonZeroGFCCount, 54 ingPhyOAMCount, 54 ingPhyOAMRMErrorCount, 54 ingPhyRMCount, 54 ingPhysCellCount, 53 ingPolCfgNonCompCnt, 35 ingressCellCount1, 41, 45 ingressCellCount2, 41, 45 counters ingPerPhyCounters, 54 counts record, 44, 45 DefLoc ingDefLoc0_1, 35 ingDefLoc10_11, 35 ingDefLoc12_13, 35 ingDefLoc14_15, 35 ingDefLoc2_3, 35 ingDefLoc4_5, 35 ingDefLoc6_7, 35 ingDefLoc8_9, 35 deleting atlasDeleteIngressConnection, 64 disabling atlasDisableIngressVC, 70 extracting atlasExtractIngressCell, 111 free ingressBank1PMFree, 32 ingressBank2PMFree, 32 freeing atlasFreeIngressBank1PMId, 98 atlasFreeIngressBank2PMId, 99 getting 146 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual atlasGetIngressBank1PMId, 96 atlasGetIngressBank2PMId, 97 atlasGetIngressVc, 70 atlasGetIngressVcCounts, 68 atlasGetIngressVcStatus, 67 atlasGetIngressVCTableCOS, 115 inserting atlasInsertIngressCell, 110 key record, 46 map ingCellProcF4PMMap, 38 ingCellProcF5PMMap, 38 max ingressMaxVCs, 31, 55 ingVCTableMax, 36 maxframe ingMaxFrame, 36 modifying atlasModifyIngressVcConfiguratio n, 77, 78, 82 atlasModifyIngressVcPM, 107 atlasModifyIngressVcPolicing, 79, 80 atlasModifyIngressVcTranslation, 81, 82 OAM ingOAMDefType0_1, 35 ingOAMDefType10_11, 35 ingOAMDefType12_13, 35 ingOAMDefType14_15, 35 ingOAMDefType2_3, 35 ingOAMDefType4_5, 35 ingOAMDefType6_7, 35 ingOAMDefType8_9, 35 OAM configuration record, 43, 44 OAM defect record, 43 outcell ingOutCellCount, 54 patlasIngressVCRecord, 64, 65, 67, 68, 70, 71, 78, 80, 82, 107 PHYPolice ingPHYPolice1, 34 ingPHYPolice2, 34 PM record, 45 PMThresh ingPMThreshA2, 38 ingPMThreshB1, 38 ingPMThreshB2, 38 ingPMThreshC1, 38 ingPMThreshC2, 38 ingPMThreshD1, 38 ingPMThreshD2, 38 policing record, 44 reading atlasReadIngressBank1PMRecord, 102 atlasReadIngressBank2PMRecord, 103 atlasReadIngressConfig, 76 atlasReadIngressCounts, 69 atlasReadIngressKey, 75 atlasReadIngressOAMConfig, 83 atlasReadIngressOAMDefect, 85 atlasReadIngressPM, 105 atlasReadIngressPolicing, 78 atlasReadIngressTranslation, 80 record type, 40 registers, 34 translation record, 45 virtual connection ivcFieldALength, 32 ivcFieldAMask, 32 ivcFieldBLength, 32 ivcFieldBMask, 32 ivcInitialised, 31 ivcMaxFieldAValue, 32 ivcMaxFieldBValue, 32 ivcMaxPhyIdValue, 32 ivcPhyIdLength, 32 ivcPhyIdMask, 32 ivcPrimaryTable, 31, 55 ivcRecordAddrFree, 31, 56 ivcSecondaryAddrIndex, 56 ivcSecondaryAddrList, 31, 56 ivcSecondaryKeys, 31, 56 ivcSecondaryTable, 31, 55, 56 VPI ingPhyLastUnknownVci, 54 ingPhyLastUnknownVpi, 54 writing atlasWriteIngressAISActivation, 86 atlasWriteIngressBank1PMConfig, 100 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 147 S/UNI-ATLAS(PM7324) Driver Manual atlasWriteIngressBank2PMConfig, 101 atlasWriteIngressCCActivation, 85 atlasWriteIngressConfig, 77 atlasWriteIngressKey, 75 atlasWriteIngressOAMConfig, 83 atlasWriteIngressPMActivation, 106 atlasWriteIngressPolicing, 79 atlasWriteIngressRDIActivation, 87 atlasWriteIngressTranslation, 81 atlasWriteIngressVpcPointer, 84 initialization leftBranch, 56 max maxEgressVCs, 59 maximumFrameLength, 42, 43 maxIngressVCs, 59 Microprocessor Cell Interface, 39, 52 Microprocessor Cell Interface Configuration, 39 MIV, 141 module intEn, 33, 34 intEnRegs, 33 psInitVector, 60 Initialization Vector, 32, 33, 60, 141 atlasModuleInit, 23, 57 atlasModuleShutdown, 23, 57 Module Initialization Vector, 141 Module Management, 24 initialization vector pointer sinitVector, 31 initializing devices Module States, 23 Multi-vendor integration protocol, 141 MVIP, 141 OAM, 25, 33, 34, 35, 36, 37, 38, 41, 43, 44, 47, 48, 49, 54, 77, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 112, 127, 128 PCI, 133, 141 PCI controller, 141 performance monitoring atlasInit, 23, 60 internalStatus, 40, 43, 47, 48 interrupt intSt, 40 Interrupt Enable Registers, 33 interrupt service routine manager isrManager, 30 Interrupt Service Routine, 19, 141 interrupt servicing atlasISR, 21, 26, 27, 28, 29, 117, 121, 124 Interrupt Status Information, 117, 122 Interrupt-Service Routine Module, 21 ISR, 19, 21, 27, 28, 29, 30, 116, 117, 120, 121, 124, 129, 134, 141 backward bwdErrors, 51 bwdFMCSN, 51 bwdImpaired, 51 bwdLostBRCells, 52 bwdLostCLP0, 51, 52 bwdLostCLP0_1, 52 bwdLostOrImpaired, 51 bwdMisinserted, 51 bwdSECBC, 51 bwdSECBCAccum, 51 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 148 S/UNI-ATLAS(PM7324) Driver Manual bwdSECBErrored, 51 bwdSECBLost, 51 bwdSECBMisins, 51 bwdTaggedCLP0, 51 bwdTotalLostCLP0, 52 bwdTotalLostCLP0_1, 52 bwdTRCC0, 50 bwdTRCC0_1, 50 bwdTUC0, 51 bwdTUC0_1, 51 currCellCountCLP0, 50 currCellCountCLP0_1, 50 f4ToF5AIS, 44 forward fwdBMCSN, 50 fwdErrors, 51 fwdFMCSN, 50 fwdLostCLP0, 51 fwdLostCLP0_1, 51 fwdLostFMCells, 51 fwdLostOrImpaired, 51 fwdMisinserted, 51 fwdSECBC, 51 fwdSECBErrored, 51 fwdSECBLost, 51 fwdSECBMisins, 51 fwdTaggedCLP0, 51 fwdTotalLostCLP0, 51 fwdTotalLostCLP0_1, 51 fwdTRCC0, 50 fwdTRCC0_1, 50 fwdTUC0, 50 fwdTUC0_1, 50 gfr, 41, 43, 76, 77 gfrState, 41, 43 nni, 40, 43, 47, 48, 87 tat1, 41, 44, 78, 79 tat2, 41, 44, 78, 79 Performance Monitoring, 38, 39, 50, 96, 100, 101, 102, 103, 104, 107 Performance Monitoring Configuration, 38 Per-PHY Policing, 52, 63, 113, 114 PHY phyNonCompliant1, 53 phyNonCompliant2, 53 phyNonCompliant3, 53 phyPolice, 41, 44 phyPoliceConfig, 53 phyTAT, 53 phyVCCount, 53 phyAction, 53 PM record active pmActive1, 40, 45, 47, 49, 105, 107, 108, 109 pmActive2, 40, 45, 47, 49, 87, 105, 107, 108, 109 address pmAddr1, 40, 45, 47, 49, 87, 105, 107, 108, 109 pmAddr2, 40, 45, 47, 49, 87, 105, 107, 108, 109 PM Session Allocation, 96 polling servicing, 28 porting functions sysAtlas, 29, 121, 133 sysAtlasDetectDevice, 59 sysAtlasDeviceDetect, 120, 133 sysAtlasDPRtask, 26, 120, 121, 122 sysAtlasDPRTask, 28, 133 sysAtlasIntHandler, 26, 27, 28, 117, 120, 121, 122, 124, 133 sysAtlasIntInstallHandler, 26, 28, 120, 121, 133 sysAtlasIntPollTask, 29 sysAtlasIntRemoveHandler, 121, 133 sysAtlasMemAlloc, 123 sysAtlasMemCopy, 133 sysAtlasMemFree, 123 sysAtlasMemSet, 124, 133 sysAtlasRawRead, 58, 119, 133 sysAtlasRawWrite, 58, 119, 133 sysAtlasRead, 137, 138 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 149 S/UNI-ATLAS(PM7324) Driver Manual sysDPRtask, 26 sysTxMsg, 25 prepend atlasReset, 23, 61 returns prePo1, 41, 46 prePo10, 42, 46, 81 prePo2, 41, 46, 81 prePo3, 41, 46 prePo4, 41, 46, 81 prePo5, 41, 46 prePo6, 42, 46, 81 prePo7, 42, 46 prePo8, 42, 46, 81 prePo9, 42, 46 Processing Flows, 24 Processor connection interface, 141 RAPI, 141 RDI, 34, 35, 36, 37, 87, 95 Real-Time operating system, 141 receive Any-PHY packet interface, 141 record type cell extraction, 25 cLPccEn, 40, 44, 80 cocup, 41, 44 cosEnable, 47, 48 crc, 52 nonCompliant1, 41, 45 nonCompliant2, 41, 45 nonCompliant3, 41, 45 register regId, 58, 119 registers reading atlasReadReg, 58 resetting devices atlasRxCell, 25, 112 end to end rxEndToEndAisDefectLoc, 42, 47 rxEndToEndAisDefectType, 47 rxEndToEndDefectLoc, 43, 48 rxEndToEndDefectType, 42, 43, 48 error ATLS_ERR_DEV_ALREADY_A DDED, 59 ATLS_ERR_DEV_NOT_DETECT ED, 59 ATLS_ERR_EPMRAM_DIAG, 63 ATLS_ERR_EVC_ADD_RECOR D_EXISTS, 66 ATLS_ERR_EVC_ADD_RECOR D_NOT_EXIST, 67 ATLS_ERR_EVC_RECORD_AD DR_RANGE, 66, 67, 71, 72, 75, 88, 89, 108 ATLS_ERR_EVC_RECORD_NO T_EXIST, 71, 72, 75, 88, 89, 108 ATLS_ERR_EXCEED_MAX_DE VS, 59 ATLS_ERR_INVALID_DEVICE, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116 ATLS_ERR_INVALID_FIELDA, 64, 66, 68, 71, 72, 75, 78, 80, 82, 88, 89, 107, 108 ATLS_ERR_INVALID_FIELDB, 64, 66, 68, 71, 72, 75, 78, 80, 82, 88, 89, 107, 108 ATLS_ERR_INVALID_MAX_VC S, 59 ATLS_ERR_INVALID_PHYID, 64, 66, 68, 71, 72, 75, 78, 80, 82, 88, 89, 107, 108, 114 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 150 S/UNI-ATLAS(PM7324) Driver Manual ATLS_ERR_INVALID_REG_ID, 58, 59 ATLS_ERR_INVALID_STATE, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116 ATLS_ERR_IPMRAM_DIAG, 63 ATLS_ERR_IVC_ADD_VC_EXIS TS, 64 ATLS_ERR_IVC_VC_ADDR_NO NE_FREE, 64 ATLS_ERR_IVC_VC_ADDR_NO T_FREE, 64 ATLS_ERR_IVC_VC_ADDR_RA NGE, 64 ATLS_ERR_IVC_VC_NOT_EXIS T, 65, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 105, 106, 107, 109, 110 ATLS_ERR_MEM_ALLOC, 57, 59 ATLS_ERR_MOD_NOT_INIT, 59, 69, 73, 75, 76, 77, 79, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 105, 106, 109, 110 ATLS_ERR_MODULE_ALREAD Y_INIT, 57 ATLS_ERR_PER_PHY_POLICE_ RAM_DIAG, 63 ATLS_ERR_PRIMARY_ADDR_R ANGE, 64, 65, 68, 71, 78, 80, 82, 107 ATLS_ERR_PRIMARY_KEY_UN EXPECTED, 64, 65, 68, 71, 78, 80, 82, 107 ATLS_ERR_REG_POLL_TIMED _OUT, 69, 70, 73, 74, 75, 76, 77, 79, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 105, 106, 109, 110 ATLS_ERR_SECONDARY_ADD R_RANGE, 64, 65, 68, 71, 78, 80, 82, 107 ATLS_ERR_SRAM_DIAG, 63 segment rxSegmentAisDefectLoc, 42, 43, 48 rxSegmentAisDefectType, 47 rxSegmentDefectType, 42, 43, 48 rxSegmentToEndAisDefectLoc, 47 RTOS, 19, 21, 23, 26, 28, 117, 122, 123, 124, 129, 132, 133, 134, 138, 139, 140, 141 RTOS Interface, 19 Software State Description, 22 Statistics, 17, 23, 53, 54, 114 Statistics Information, 53 structures sALTS_PM_REGS, 33 sATLS_DDB, 30, 59 sATLS_E_PERPHY_COUNTERS, 54 sATLS_EGRESS_COUNTS, 49, 72 sATLS_EGRESS_OAMDEFECT, 48, 92 sATLS_EGRESS_PM_FREE, 32 sATLS_EGRESS_RECORD, 33, 47, 65, 66, 67, 71, 72, 74, 87, 88, 89, 108 sATLS_EGRESS_REGS, 33, 36 sATLS_EVC_RECORD_ADDR_EXI STS, 31 sATLS_EVCRAM_TYPE, 32 sATLS_GDD, 30 sATLS_I_PERPHY_COUNTERS, 54 sATLS_INGRESS_CONFIG, 43, 76, 77 sATLS_INGRESS_PM_FREE, 32 sATLS_INGRESS_REGS, 33, 34 sATLS_INIT_VECT, 31, 33, 60, 136, 138 sATLS_INIT_VECTOR, 31, 33, 136, 138 sATLS_INT_EN_REGS, 33 151 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 S/UNI-ATLAS(PM7324) Driver Manual sATLS_ISR_MANAGER, 30 sATLS_IVC_NODE_TYPE, 55 sATLS_IVC_PRIMARY_TABLE, 31 sATLS_IVC_RECORD_ADDR_FRE E, 31 sATLS_IVC_SECONDARY_ADDR _LIST, 31 sATLS_IVC_SECONDARY_KEYS, 31 sATLS_IVC_SECONDARY_TABLE , 31 sATLS_MPCELL_REGS, 33, 39 sATLS_NODE_TYPEs, 55 system specific information user context usrCtxt, 31, 59, 127, 128, 129, 130, 134, 135 value pval, 58, 119 VCI, 38, 54, 55, 67, 68, 71, 88, 89 virtual connection pointer pvcId, 64, 65, 66 VPI, 54, 67, 68, 71, 88, 89 writing psysInfo, 31 testing atls_test.c, 134 testing devices atlasWriteEgressBank2PMConfig, 102 atlasWritePerPHYPolicing, 113 mAtlas_WRITE, 136, 137 registers atlasWriteReg, 58 atlasTest, 63 Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 152 S/UNI-ATLAS(PM7324) Driver Manual Proprietary and Confidential to PMC-Sierra, Inc., and for its Customers' Internal Use Document ID 2000949, Issue 3 153 |
Price & Availability of 2000949 |
|
|
All Rights Reserved © IC-ON-LINE 2003 - 2022 |
[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy] |
Mirror Sites : [www.datasheet.hk]
[www.maxim4u.com] [www.ic-on-line.cn]
[www.ic-on-line.com] [www.ic-on-line.net]
[www.alldatasheet.com.cn]
[www.gdcy.com]
[www.gdcy.net] |